Идентичность (1,1) в Microsoft SQL Server - есть ли практическая причина когда-либо использовать значения, отличные от 1,1, для начального числа / приращения? - PullRequest
0 голосов
/ 24 мая 2019

Я преподаю курс Microsoft SQL Server, и один из студентов спросил, есть ли практическая причина, по которой мы когда-либо установили бы автоинкремент, отличный от 1,1 (начальное число начинается с 1, инкремент увеличивается на 1). Есть ли практическая причина, по которой мы бы когда-либо устанавливали начальное значение на что-то более высокое или увеличивали на значение, отличное от 1? Разве это не важно, если это значение уникально?

Если нет практической причины, почему у нас есть возможность установить эти значения для удостоверения в Microsoft SQL Server?

Ответы [ 2 ]

2 голосов
/ 24 мая 2019

Существует множество практических причин для настраиваемого начального значения:

  • Возможно, вы захотите вставить несколько предопределенных записей с хорошо известными идентификаторами, например, записи Missing, Unknown и Not Applicable в таблице измерений или таблицы поиска, вероятно, должны иметь предопределенные идентификаторы. Новые строки должны получить идентификаторы вне диапазона предопределенных чисел.
  • После загрузки или репликации данных с существующими значениями идентификаторов новые записи должны получать идентификаторы, которые не конфликтуют с импортированными данными. Самый простой способ сделать это - установить начальный идентификатор где-то выше максимального импортированного идентификатора.
  • TRUNCATE TABLE сбрасывает значение IDENTITY. Чтобы избежать создания повторяющихся идентификаторов, вам нужно повторно заполнить таблицу с помощью DBCC CHECKIDENT и установить текущее значение в значение, отличное от 1

Есть, конечно, десятки других причин.

2 голосов
/ 24 мая 2019

Если вы используете целое число со знаком и начинаете с 1, вы используете только половину доступного диапазона.По умолчанию должно действительно начинаться с минимального значения для типа данных, например, -2 миллиарда для 32-разрядного типа int.

В некоторых случаях может потребоваться объединить данные из нескольких таблиц.В этом случае каждая таблица должна содержать отдельный диапазон идентификаторов.Каждая таблица может начинаться с другого номера, чтобы избежать совпадений.Например, начните один с 1, а другой с 1 миллиарда.Или вы можете использовать нечетные числа для одного (1,2) и четные числа для другого (2,2).

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