Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie wird nach der Verwendung von identity_insert automatisch neu gesetzt?

Verwenden Sie die Informationen in diesem Link in Kombination mit einer SQL-Funktion, die die max(RID) aus jeder Tabelle erhält, die Sie zurücksetzen müssen. Wenn Sie beispielsweise Ihren Primärschlüssel-Seed bei 25000 beginnen möchten, verwenden Sie den folgenden Code (StartSeedValue - 1)

DBCC CHECKIDENT('myTable', RESEED, 24999)

In Kombination sollten Sie also so etwas wie das hier erhalten

DECLARE @maxVal INT
SELECT @maxVal = ISNULL(max(ID),0)+1 from mytable
DBCC CHECKIDENT('mytable', RESEED, @maxVal)

Sorry für den Pseudo-Code, es ist schon eine Weile her, dass ich eine SQL-Funktion geschrieben habe :)

BEARBEITEN:

Danke für den Fang, habe INTEGER in INT

geändert
USE YourDBName
GO 
SELECT *
FROM sys.Tables
GO 

Dadurch erhalten Sie eine Auflistung aller Benutzertabellen in der Datenbank. Verwenden Sie diese Abfrage als Ihre 'Schleife' und das sollte es ermöglichen, die Startwerte für alle Tabellen zurückzusetzen.