하지 말아야 할 가장 좋은 방법 :
declare @max int;
select @max = coalesce(max(key), 1) from table;
dbcc checkident(table,reseed,@max)
또한이 스레드를 보라. ID 필드가 있으면 값을 생성하도록합니다. 가치를 전달할 수 있기를 원한다면 자기 자신은 그다지 가치를 인정하지 않습니다.
그러나 당신이 이런 일을 할 수있는 다음 무엇을하려고하고 싶지 않는 경우에 ...
CREATE TABLE new_employees
(
ID int IDENTITY(1,1),
NAME varchar (20),
BALANCE int
)
GO
INSERT INTO new_employees (NAME, BALANCE)
VALUES ('Name 1', 1),('Name 2', 2),('Name 3', 3),
('Name 4', 4),('Name 5', 5)
GO
DELETE FROM new_employees
WHERE ID > 3
DBCC CHECKIDENT ('new_employees', RESEED,0) -<-- with seed value 0
확인 ID 정보 : 현재 ID 값 '5', 현재 열 값 '0'.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 인쇄 한 경우 시스템 관리자에게 문의하십시오.
DBCC CHECKIDENT ('new_employees', RESEED) --<-- WIth out any seed value
이 가장 높은 둥지 가능 Indentity 값으로 값을 다시 시드됩니다.
검사 ID 정보 : 현재 ID 값 '0', 현재 열 값 '3'.
DBCC 실행이 완료되었습니다. DBCC에서 오류 메시지를 인쇄 한 경우 시스템 관리자에게 문의하십시오.
INSERT INTO new_employees (NAME, BALANCE)
VALUES ('Name 4', 4),('Name 5', 5),('Name 6', 6)
어떤 이점이 있습니까? 나는 장기적으로 이것은 일을 더 어렵게 만들 것이라고 생각합니다. – Elias
증분 값을 유지하기 위해 ID를 사용하지 마십시오. 일반적으로 삭제되지는 않지만 삭제 된 행이없는 경우에도 gab이있는 경우를 쉽게 실행할 수 있습니다. 당신은 스스로 가치를 유지해야합니다. 그러나 나는 엘리야에 동의합니다. 이점은 무엇입니까? 행 번호가 유지되지 않고 필요할 경우 언제든지 행 번호를 선택할 수 있습니다. –
당신은 ** 그렇게하려고하지 않아야합니다 !! 이미 행에 이미 할당 된 값을 "재활용"하는 것은 대단히 나쁜 생각입니다! ** 이럴 수 없어! ** –