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

Откуда: Москва
Сообщений: 17
Вы разрабатываете клиент-серверное приложение, среди функций которого есть формирование и печать счетов-фактур. Согласно законодательству РФ счета-фактуры, выдаваемые организацией, должны иметь последовательные неповторяющиеся номера, каждый год начинающиеся с единицы. Поэтому для хранения счетчика номеров счетов-фактур (и прочих счетчиков) вы создаете в базе данных таблицу следующей структуры:

create table dbo.Counters
(
	CounterName varchar(20) not null,
	CounterValue int not null,
	constraint PK_Counters primary key clustered (CounterName)
)
insert into dbo.Counters values ('счет-фактура', 1)


Но, т.к. с вашим приложением может одновременно работать несколько пользователей, вам нужно каким-то образом обеспечить последовательность и уникальность номеров счетов-фактур, независимо от того, на каком количестве компьютеров формируются счета-фактуры. Как достичь необходимого эффекта?

Скорее всего тут подразумевается блокировка ячейки, но не факт. Подскажите пожалуйста.
1 ноя 16, 10:22    [19844744]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по блокировке ячейки  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
Интересно, а можно генерить тыщу номеров и класть в табличку.
Когда кто-то очередной хочет номер
;With n as (select top 1 * from xxx with (readpast))
delete from n

Если откат транзакции оно красиво обратно само вернется. Ну или можно потом самому номер освободить и вернуть.

Такой велосипед кто нибудь делает?
1 ноя 16, 10:38    [19844819]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по блокировке ячейки  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
Может, это поможет?

Генераторы в MSSQL

Забудьте слово "ячейка". Нет такого понятия.
1 ноя 16, 10:39    [19844828]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по блокировке ячейки  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
MathewSun,

Ячейку блокировать нельзя, можно строку. Но либо у вас будут все висеть на блокировке и ждать, либо вам придется как-то заполнять дырки каждый раз.и ж точно identity поле вам не поможет.
1 ноя 16, 10:41    [19844840]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по блокировке ячейки  [new]
aleks2
Guest
MathewSun
Согласно законодательству РФ счета-фактуры, выдаваемые организацией, должны иметь последовательные неповторяющиеся номера, каждый год начинающиеся с единицы. Подскажите пожалуйста.

1. Непрерывности не требуется.
2. Нехрен выдумывать непромокаемый порох.
3. Identity + вычисляемое поле.
1 ноя 16, 10:41    [19844843]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по блокировке ячейки  [new]
Mike_za
Member

Откуда: Москва
Сообщений: 1176
iap,

Стремный какой-то генератор. Особенно внешняя транзакция в функции.
1 ноя 16, 10:48    [19844872]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить