Сбросить существующие идентификаторы данных и идентичность после удаления данных? - PullRequest
1 голос
/ 08 октября 2019

Я удалил некоторые данные в нашей базе данных, и я просто хочу знать, можно ли как-то сбросить значение автоинкремента и сбросить также идентификатор существующих данных, которые я не удалил.

Скажем, у меня есть пользовательская таблица, содержащая около 100 данных, и я удалил данные с 1 по 50. Можно ли сбросить идентификатор, чтобы он снова начинался с 1, а автоприращение - до 51, поскольку это будет следующее число?

Я знаю о DBCC CHECKIDENT (mytable, RESEED, 0). Но если мое понимание верно, оно только сбросит следующее значение id следующих данных, которые будут вставлены в таблицу. Я хочу также сбросить существующие идентификаторы.

Пожалуйста, дайте мне знать, если это возможно.

ПРИМЕЧАНИЕ

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

Ответы [ 2 ]

3 голосов
/ 08 октября 2019

Не тратьте время на это. ID для внутреннего использования. Кроме того, если у вас есть отношения с другими таблицами, вам также необходимо обновить идентификаторы.

Вы можете создать представление или просто добавить любой оператор SELECT ROW_ID() OVER(ORDER BY [id]), и вы получите значение приращения безпробелы.

0 голосов
/ 08 октября 2019

Если вы хотите заполнить пропуски, вам придется делать это вручную, используя Set identity_insert on.

Например, если я хочу изменить мои строки 51-60 на 1-10:

set identity insert mytable on
insert mytable(id, column1, column2)
select id-50, column1, column2 
from myTable 
where id between 51 and 60
set identity_insert mytable off
delete mytable where id between 51 and 60

Затем повторно введите ваш ID, и все будет хорошо.

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