[sql-server] 삭제 후 SQL Server에서 자동 증분 재설정

SQL Server 데이터베이스의 테이블에서 일부 레코드를 삭제했습니다. 이제 ID가 101에서 1200으로 변경되었습니다. 레코드를 다시 삭제하고 싶지만 ID가 다시 102로 돌아 가기를 원합니다. SQL Server에서이를 수행 할 수있는 방법이 있습니까?



답변

다음 명령을 실행하여 mytable을 다시 시작하여 1부터 시작하십시오.

DBCC CHECKIDENT (mytable, RESEED, 0)

온라인 설명서 (BOL, SQL 도움말)에서 이에 대해 읽으십시오. 또한 설정하려는 시드보다 높은 레코드가 없는지주의하십시오.


답변

DBCC CHECKIDENT('databasename.dbo.tablename', RESEED, number)

number = 0이면 다음 삽입에서 자동 증분 필드에 값 1이 포함됩니다.

number = 101이면 다음 삽입에서 자동 증분 필드에 값 102가 포함됩니다.

몇 가지 추가 정보가 … 당신에게 도움이 될 수 있습니다

자동 증가를 제공하기 전에 number위의 질의에, 당신은 확실히 기존 테이블의 자동 증가 열이 덜 그 값을 포함 할 수 있도록해야한다 number.

테이블 (table1)에서 열 (column_name)의 최대 값을 얻으려면 다음 쿼리를 사용할 수 있습니다

 SELECT MAX(column_name) FROM table1


답변

반 바보 증거 :

declare @max int;
select @max = max(key) from table;
dbcc checkident(table,reseed,@max)

http://sqlserverplanet.com/tsql/using-dbcc-checkident-to-reseed-a-table-after-delete


답변

MySQL을 사용하는 경우 다음을 시도하십시오.

ALTER TABLE tablename AUTO_INCREMENT = 1


답변

데이터베이스의 모든 테이블을 삭제하고 다시 시드하십시오.

    USE [DatabaseName]
    EXEC sp_msforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"       -- Disable All the constraints
    EXEC sp_MSForEachTable "DELETE FROM ?"    -- Delete All the Table data
    Exec sp_MSforeachtable 'DBCC CHECKIDENT(''?'', RESEED, 0)' -- Reseed All the table to 0
    Exec sp_msforeachtable "ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"  -- Enable All  the constraints back

-- You may ignore the errors that shows the table without Auto increment field.


답변

나는 그것을 알아. 이것의:

 DBCC CHECKIDENT ('tablename', RESEED, newseed)


답변

전체 스키마 자격을 갖춘 유사한 문제가 발생한 사람들을 위해 허용 된 답변을 기반으로합니다.

( [MyDataBase].[MySchemaName].[MyTable]) … 오류가 발생합니다. 해당 DB의 컨텍스트에 있어야합니다.

즉, 다음과 같은 오류가 발생합니다.

DBCC CHECKIDENT ([MyDataBase].[MySchemaName].[MyTable], RESEED, 0)

정규화 된 테이블 이름을 작은 따옴표로 묶으십시오.

DBCC CHECKIDENT ('[MyDataBase].[MySchemaName].[MyTable]', RESEED, 0)