Добавление нового порядкового номера в качестве идентификатора - PullRequest
0 голосов
/ 23 января 2012

Есть таблица с идентификатором varchar.Есть также несколько SP, которые генерируют это число, получая максимум и увеличивая на 1.

Как я могу заблокировать таблицу, чтобы я мог зарезервировать идентификаторы, например, для 50 новых записей, и ни один пользователь в то же время не имелвставил запись в мой «диапазон», который я получил.

Возможно ли что-то подобное?

Ответы [ 2 ]

2 голосов
/ 23 января 2012

Это невероятно трудная проблема, поэтому каждая реализация СУБД имеет встроенный тип данных с автоматически увеличивающимся идентификатором.

ИСПОЛЬЗОВАТЬ IDENTITY ПОЛЕ

Это действительно единственное правильное решение для этого. Если у вас высокая скорость транзакций, в вашем коде будет невероятное количество блокировок и блокировок для выполнения чего-то, что механизм разработан для автоматической обработки для вас.

Если вам нужно буквенно-цифровое поле, нет причин, по которым вы не можете иметь поле идентификации и varchar и использовать их в качестве двойного ключа.

0 голосов
/ 23 января 2012

У вставки вставки в транзакции.

Пример:

BEGIN TRANSACTION MyIdentifierRange
     EXEC usp_createNewIdentifier 
COMMIT TRANSACTION MyIdentifierRange
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...