Sie können CHECKIDENT verwenden, um das Seed zurückzusetzen
DBCC CHECKIDENT
(
table_name
[ , { NORESEED | { RESEED [ , new_reseed_value ] } } ]
)
[ WITH NO_INFOMSGS ]
Beispiel
DBCC CHECKIDENT ('TAble', reseed,0)
-- Beispielabfrage
Sie können die Grunddaten mit den folgenden Codes einfügen
Erstellen Sie zuerst eine Tabelle und fügen Sie dann Daten in die Tabelle ein
Schritt für Schritt zeige ich Daten an und entferne Daten, um Details für das Verständnis des Codes anzuzeigen
Ergebniscode: Tabelle mit zurückgesetzter IDs erstellen Ich verwendete die DMV sys.identity_columns, um festzustellen, ob die Tabelle ein Identitätsattribut hat
--Tabelle erstellen
DROP TABLE IF EXISTS ExampleTable
create table ExampleTable (Id Bigint identity(1,1), Name nvarchar(10))
--In ExampleTable einfügen und Löschen und Identität anzeigen
insert into ExampleTable (Name)
select 'Test1' as NAme union all select 'Test2' as NAme
select * from ExampleTable
| Id | Name |
| -------- | -----|
| 1 |Test1 |
| 2 |Test2 |
delete from ExampleTable
insert into ExampleTable (Name) select 'Test3' as NAme
select * from ExampleTable
| Id | Name |
| -------- | -----|
| 3 |Test3 |
delete from ExampleTable
Zuerst Daten prüfen Wenn die Tabelle keine Daten enthält, verwenden Sie den Seed-Wert
Wenn die Tabelle Daten enthält, verwenden Sie die Maximal-ID
Nach der Änderung des Seeds mit CHECKIDENT
--Seed-Tabelle finden
declare @reseed int=0
if(not exists( select top 1 * from ExampleTable))
begin
SELECT
@reseed=cast( seed_value as int)
FROM sys.tables tables
JOIN sys.identity_columns identity_columns
ON tables.object_id=identity_columns.object_id
where
tables.name='ExampleTable'
and OBJECT_SCHEMA_NAME(tables.object_id, db_id())='dbo'
set @reseed=@reseed -1
end
else
begin
--Wenn die Tabelle Daten enthält und Max-ID für Seed verwendet
set @reseed=(select top 1 id from ExampleTable order by id desc)
end
DBCC CHECKIDENT ('ExampleTable', reseed,@reseed)
insert into ExampleTable
(Name)
select 'Test4' as NAme
select * from ExampleTable
| Id | Name |
| -------- | -----|
| 1 |Test4 |
GO