Maison > base de données > tutoriel mysql > L'identité SQL Server (auto-incrémentation) continue-t-elle à s'incrémenter après une restauration de transaction ?

L'identité SQL Server (auto-incrémentation) continue-t-elle à s'incrémenter après une restauration de transaction ?

Patricia Arquette
Libérer: 2025-01-13 22:53:48
original
969 Les gens l'ont consulté

Does SQL Server Identity (Auto-Increment) Continue Incrementing After a Transaction Rollback?

Le comportement incrémental des colonnes d'auto-incrémentation de SQL Server après l'annulation d'une transaction : pas de problème

Supposons qu'une transaction .NET insère des données dans une base de données SQL Server 2005 avec une clé primaire à incrémentation automatique. La méthode Rollback() annule correctement l'opération d'insertion de ligne lorsqu'une erreur est rencontrée dans la transaction. Cependant, les insertions ultérieures dans la même table incrémentent la colonne d'auto-incrémentation comme si aucune restauration ne s'était produite, créant ainsi un espace dans la séquence.

Comprendre la fonctionnalité d'incrémentation automatique

Il est important de comprendre que la conception des nombres auto-incrémentés n'est pas transactionnelle. La raison de cette conception est qu'un blocage peut se produire si d'autres transactions doivent attendre de consommer ou d'annuler le nombre incrémenté avant de pouvoir continuer.

Pour illustrer cela, considérons le scénario suivant dans lequel l'utilisateur 1 et l'utilisateur 2 interagissent avec la table A en utilisant un champ à incrémentation automatique comme colonne ID :

<code>用户 1
------------
begin transaction
insert into A ...
insert into B ...
update C ...
insert into D ...
commit

用户 2
-----------
begin transaction
insert into A ...
insert into B ...
commit</code>
Copier après la connexion

Si la transaction de l'utilisateur 2 se produit après la transaction de l'utilisateur 1, même juste un peu plus tard, son opération d'insertion dans la table A sera obligée d'attendre la fin de la transaction complète de l'utilisateur 1, juste pour être sûr que la première fois, elle provient de la table A. Indique si le numéro d'incrémentation automatique inséré est utilisé.

Conclusion

Par conséquent, le comportement de la colonne auto-incrémentée qui continue de s'incrémenter après l'annulation de la transaction n'est pas une erreur, mais une stratégie délibérément conçue. Si des nombres incrémentiels séquentiels précis sont requis, d’autres mécanismes doivent être envisagés pour générer de telles valeurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal