Внедренный вручную столбец идентификаторов в SQL Server 2005 - PullRequest
2 голосов
/ 25 февраля 2010

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

Итак, вот мой вопрос: если предположить, что об обычном автоматическом методе не может быть и речи, как лучше всего реализовать столбец идентификаторов в SQL?

Ответы [ 2 ]

4 голосов
/ 25 февраля 2010

Предполагая, что об обычном автоматическом методе не может быть и речи, как лучше всего реализовать столбец идентификаторов в SQL?

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

1 голос
/ 25 февраля 2010

Я видел это, когда клиенты хотят иметь числовые идентификаторы, которые являются последовательными для разных таблиц, так что tableA имеет строки с идентификаторами 1,2,3, а tableB - строки с идентификаторами 4,5,6. Они достигли этого, в основном имея таблицу NextId , которая, как можно догадаться, содержит следующий идентификатор, который будет использоваться.

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

...