SQL - Comment insérer une ligne sans incrémenter automatiquement une colonne ID?
J'ai une table qui a une colonne d'incrément automatique forcé et cette colonne est un ID très précieux qui est conservé à travers toute l'application. Désolé de dire que c'était un mauvais développement de ma part que ce soit la colonne d'incrémentation automatique.
Alors, voici le problème. Je dois insérer dans cette table un ID pour la colonne qui a déjà été créée et supprimée de la table. Un peu comme ressusciter cet identifiant et le remettre dans la table.
Alors, comment puis-je faire cela par programme, faites-le sans désactiver l'incrément de colonne. Corrigez-moi si je me trompe, si je l'éteins par programme, il redémarrera à 0 ou 1 et je ne veux pas que cela se produise...
3 réponses
Si vous êtes dans Microsoft SQL Server, vous pouvez "désactiver" la fonction d'auto-incrémentation en émettant l'instruction Set Identity_Insert [TableName] On
, comme dans:
Set Identity_Insert [TableName] On
-- --------------------------------------------
Insert TableName (pkCol, [OtherColumns])
Values(pkValue, [OtherValues])
-- ---- Don't forget to turn it back off ------
Set Identity_Insert [TableName] Off
En plus de la réponse de Charles (qui est maintenant 100% correcte :-) et qui préserve la valeur actuelle de L'identité sur la table), vous pouvez également vérifier la valeur actuelle d'une identité sur une table - vous pouvez le faire avec cette commande ici:
DBCC CHECKIDENT('YourTableName')
Si jamais vous avez besoin de modifier, vous pouvez le faire en utilisant cette commande ici:
DBCC CHECKIDENT ('YourTableName', RESEED, (new value for IDENTITY) )
En fait, le code ci - dessus pour INDENTITY_INSERT est correct-l'activer indique au serveur que vous souhaitez insérer les valeurs vous-même. Il vous permet d'insérer des valeurs dans une colonne D'identité. Vous voulez ensuite le désactiver (permettant au serveur de générer et d'insérer les valeurs) lorsque vous avez terminé.