2014-09-03 1 views
0

Используя центральную базу данных SQL Server 2000, у меня есть таблица с именем UNIQUE_ID_COUNTER. Используя следующую структуру таблицы, это содержит несколько строк, поддерживающих уникальный идентификатор, назначенный различным типам объектов, перенаправленным в другую систему.Хранимая процедура SQL Server 2000 получает уникальный номер из уникальной строки идентификатора, избегая проблем с одновременным запросом

UNIQUE_ID INT, 
NAME VARCHAR(MAX) 

234, "APPLES" 
189, "PEARS" 
... 

Каждый раз, когда хранимая процедура вызывается из клиента UNIQUE_ID выбирается через NAME, а затем увеличивается на 1.

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

Как я могу избежать этого, но все же гарантировать, что хранимая процедура вернет правильное значение и увеличит столбец UNIQUE_ID?

Ваша помощь была бы очень признательна! :)

+0

Простой: пусть ** база данных ** обрабатывает все эти досадные детали с помощью столбца «INT IDENTITY» - тогда у вас никогда не будет дубликатов, вам не нужно беспокоиться о том, чтобы увеличить ваш счетчик - все обрабатывается для вас , –

+0

Приятный один marc_s, я знал, что я уже думал об этом :) – Barbloke6

ответ

0

Рекомендуемое и рекомендуемое решение довольно просто: пусть база данных обрабатывает все эти отвратительные детали, используя столбец INT IDENTITY.

Тогда у вас никогда не будет дубликатов, вам не нужно беспокоиться о том, чтобы увеличить ваш счетчик - все для вас.