Что происходит с идентификатором первичного ключа, когда он превышает лимит? - PullRequest
12 голосов
/ 15 марта 2011

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

  1. Что теперь происходит?SQL Server снова запустит идентификатор первичного ключа с 1?или -1?

  2. Что произойдет, если цикл составит 4 миллиарда раз;откуда SQL Server знает, что нельзя заменить предыдущие данные?

Ответы [ 2 ]

21 голосов
/ 15 марта 2011

Вы получаете сообщение об ошибке, если identity будет выходить за рамки типа данных делает остальную часть вашего вопроса тоо.Вы можете увидеть это по

CREATE TABLE #T
(
id INT IDENTITY(2147483647,1)
)

INSERT INTO #T
DEFAULT VALUES

INSERT INTO #T
DEFAULT VALUES /*Arithmetic overflow error converting IDENTITY to data type int.*/

GO

SELECT * FROM #T

DROP TABLE #T
8 голосов
/ 15 марта 2011

Используйте BIGINT, и вы, вероятно, никогда не достигнете предела.

...