Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ежегодный сброс счетчика  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Всем привет! Не знаю как реализовать в ряде таблиц ежегодный сброс счетчика номера записи, но чтобы счетчик ключа оставался не тронутым. Сейчас ключ и является инкрементным номером записи. Подскажите, может есть какой-то стандартный метод задействовать 2 инкрементных счетчика - один под ключ, а второй под сбрасываемую нумерацию записей?
Спасибо за советы!
2 фев 15, 07:03    [17204277]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
Добрый Э - Эх
Guest
FOGOT-BAstA,

ключ - IDENTITY
счетчик - SEQUENCE
2 фев 15, 07:14    [17204290]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
aleks2
Guest
Добрый Э - Эх
FOGOT-BAstA,

ключ - IDENTITY
счетчик - SEQUENCE


Что за фуфло?
IDENTITY + вычисляемое поле от IDENTITY.
2 фев 15, 07:23    [17204297]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
aleks2
Добрый Э - Эх
FOGOT-BAstA,

ключ - IDENTITY
счетчик - SEQUENCE


Что за фуфло?
IDENTITY + вычисляемое поле от IDENTITY.

Не подскажешь формулу?=)
2 фев 15, 09:07    [17204452]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20600
Храни в служебной таблице пару (год - начальное значение счётчика). И отнимай его от автоинкремента, когда понадобится.
2 фев 15, 09:36    [17204530]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
Cane Cat Fisher
Member

Откуда:
Сообщений: 1809
FOGOT-BAstA,

Не забудь про случай, когда 10 января кому-то захочется что-то доввести за прошлый год.
2 фев 15, 10:10    [17204726]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Cane Cat Fisher
И что может случиться? В таблице ведь уже все введенные в прошлом году записи есть! А новые будут с начала нумероваться!
2 фев 15, 11:03    [17205088]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
Glory
Member

Откуда:
Сообщений: 104760
FOGOT-BAstA
В таблице ведь уже все введенные в прошлом году записи есть! А новые будут с начала нумероваться!

А если я начал вводить данные 31.12 в 23:55, а закончил их вводить 01.01 в 00:05, то у этих данных какие номера будут ?
2 фев 15, 11:09    [17205126]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Видимо старые, я ведь в ручную буду сбрасывать...
2 фев 15, 13:10    [17206142]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
Cane Cat Fisher
Member

Откуда:
Сообщений: 1809
FOGOT-BAstA,

Предположения расплывчаты, пока мы не знаем предметной области. Но все же подозреваю, что год подразумевается не "астрономический", наступающий по бою курантов, а какой-то логический, отчетный?

Тогда нужно быть готовым, что один оператор вводит кучу данных за 2014-й год, и будет вводить их еще 1-го и 2-го января 2015-го, а второй оператор уже 1-го января бодро приступил к вводу данных за 2015-й год. Что переключать будете?

Как уже сказали раньше, можно хранить в служебной таблице пару год - некое значение счётчика. Дальше - по вкусу: начальное, конечное, комбинация с диапазонами IDENTIFY и т.д. И каждый документ получает номер в своем контексте.
2 фев 15, 17:45    [17208138]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
FOGOT-BAstA
Member

Откуда:
Сообщений: 197
Cane Cat Fisher,
Спасибо за советы. На самом деле все просто. Ввожу все данные я один. В начале года (после каникул) мне надо сбросить нумерацию отчетов, чтобы опять началось с 1. В принципе ничего сложного
3 фев 15, 13:48    [17211746]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2498
Мы в свое время использовали программную генерацию номеров для всевозможных документов системы. (У всех документов было поле "Дата документа"). Таблица состояла из 3-х полей: Тип документа, Год, Номер. И функция Get_Doc_NB(doc_type, year) как единое место для генерации нового номера.
Защиту от одновременного вызова функции можно сделать через sp_getapplock / sp_releaseapplock
Или через
Update <таблица>
SET @var_doc_nb = doc_nb = doc_nb + 1
Where year = @year and  doc_type = @doc_type


Код для генерации 1-й строки для нового года сделаете уже сами.
10 фев 15, 13:59    [17244441]     Ответить | Цитировать Сообщить модератору
 Re: Ежегодный сброс счетчика  [new]
Slava_Nik
Member

Откуда: из России
Сообщений: 888
FOGOT-BAstA,
truncate table ))), шучу конечно.
10 фев 15, 15:12    [17244883]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить