FeroseKhan Ответов: 2

Как автоматическое увеличение значения идентификатора в таблице поддерживает следующее значение, даже если строка удалена ?


Пример: если у меня есть таблица Employee со столбцом EmpId INT (IDENTITY(1,1), EmpName VARCHAR(60)
таблица выглядит как перед удалением
--------- -------
Столбец Empname Empid В
1 ХХХ
2 yyy

таблица после удаления второй строки, т. е. EmpId =2
--------- -------
Столбец Empname Empid В
1 ХХХ

таблица после вставки новой строки
--------- -------
Столбец Empname Empid В
1 ХХХ
3 ззз

А вот и мой вопрос
Как этот EmpId автоматически увеличивается как 3 вместо 2. Существует ли какая-либо временная таблица для хранения последнего значения столбца Identity ?
Или
Как он идентифицируется для следующей строки EmpId таблицы, которая должна быть задана как 3?

Что я уже пробовал:

Я попробовал поиск в Google, но результат получается связанным с изменением значения идентификатора с помощью "Reseed" в SQL SERVER

2 Ответов

Рейтинг:
0

OriginalGriff

Не.
Вы можете это сделать , но это действительно опасно, особенно в многопользовательской системе, такой как SQL.
Предполагается, что столбцы идентификаторов дают уникальное значение строке, а не предоставляют последовательный номер, который не имеет пробелов. Если вы хотите этого, то используйте ROW_NUMBER (Transact-SQL)[^] вместо этого-он предоставляет последовательность для текущего состояния SELECT.


Рейтинг:
0

F-ES Sitecore

Последовательность идентификаторов-это просто свойство таблицы, которую поддерживает рассматриваемый компонент database engine, она не хранится в таблице сама по себе. Если вы хотите изменить этот номер, то этот процесс известен как" повторный посев", но есть много причин, по которым вы не должны изменять номер, если вам действительно не нужно, это нормально иметь" пробелы " в ваших идентификаторах.