Существуют ли проверенные / действительные методы управления вашим собственным последовательным целочисленным полем без использования встроенной в SQL Server спецификации идентификации?Я думаю, что это должно было быть сделано много раз, и мои сегодняшние навыки Google просто подводят меня.
Моя первая мысль - использовать отдельную таблицу для управления идентификаторами и использовать триггер на целевой таблице.управлять настройкой идентификатора.Очевидно, что проблемы с параллелизмом важны, но производительность вставки в этом случае не критична.
И вот некоторые ошибки, о которых я знаю, что мне нужно обратить внимание:
- Необходимо убедиться, чтоодин и тот же идентификатор не раздается несколько раз при одновременном запуске нескольких процессов.
- Необходимо убедиться, что любое решение 1) не вызывает взаимных блокировок
- Необходимо убедиться, что триггер работает правильнокогда несколько записей вставляются в один оператор;не только для одной записи за раз.
- Необходимо убедиться, что триггер устанавливает идентификатор только тогда, когда он еще не указан.
Причина последней маркированной точки (иединственная причина, по которой я хочу сделать это без поля Identity Specification (в первую очередь), заключается в том, что я хочу заполнить несколько сред в разных начальных точках и хочу иметь возможность копировать данные между каждой из них, чтобы идентификатор для заданногозапись остается неизменной между средами (и я должен использовать целые числа; я не могу использовать GUID).
(Также да, я мог бы включить / выключить идентификационную вставку для копирования данных и все еще использовать обычное поле Identity Specification, нозатем он перезапускает его после каждой вставки. Я мог бы , а затем использовал DBCC CHECKIDENT, чтобы перезапустить его туда, где он был, но я чувствую, что риск с этим решением слишком велик.ошибка, и тогда, когда мы осознаем это, было бы настоящей болью восстановить данные ... вероятно, достаточно боли, чтобы этоВо-первых, имело бы больше смысла просто делать то, что я делаю сейчас).