Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment réamorcer automatiquement après avoir utilisé identity_insert ?

Utilisez les informations dans ce lien en combinaison avec une fonction SQL qui obtient le max(RID) de chaque table que vous devez réinitialiser. Par exemple, si vous souhaitez démarrer votre graine de clé primaire à 25000, utilisez le code ci-dessous (StartSeedValue - 1)

DBCC CHECKIDENT('myTable', RESEED, 24999)

Donc, en combinaison, vous devriez vous retrouver avec quelque chose comme ça

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

Désolé pour le pseudo-code, ça fait un moment que je n'ai pas écrit de fonction SQL :)

MODIFIER :

Merci pour la capture, changé le INTEGER en INT

USE YourDBName
GO 
SELECT *
FROM sys.Tables
GO 

Cela vous donnera une liste de toutes les tables d'utilisateurs dans la base de données. Utilisez cette requête comme "boucle" et cela devrait permettre de réinitialiser les graines sur toutes les tables.