Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Toujours mon identity : est-ce normal ?

2 réponses
Avatar
jerome
Je me rends compte que pour une colonne de type autoincrement, si j'ouvre
une transaction, que je fais un insert, que cet insert échoue pour une
raison ou une autre et que j'annule donc la transaction, la valeur du
compteur est quand même augmentée d'une unité.

Est-ce un comportement normal ?
Car, de fait, à chaque transaction qui échoue j'ai un "trou" dans ce
compteur.

Merci

2 réponses

Avatar
Fred BROUARD
jerome a écrit :
Je me rends compte que pour une colonne de type autoincrement, si j'ouvre
une transaction, que je fais un insert, que cet insert échoue pour une
raison ou une autre et que j'annule donc la transaction, la valeur du
compteur est quand même augmentée d'une unité.

Est-ce un comportement normal ?



Tout à fait normal : toute clef consommé est perdue.

Car, de fait, à chaque transaction qui échoue j'ai un "trou" dans ce
compteur.



les clef consommées ne doivent JAMAIS être réutilisées. D'ou les "trous".
En effet que se pasSerait-il si :
1) j'ajoute un client (id autoinc = 32)
2) je sauvegarde la base
3) un utilisateur supprime le client 32
4) j'ajoute un nouveau client avec récupérationn des trous donc n°32
5) l'utilisateur ayant supprimé le client 32 vous signale qu'il à commis
une erreur et vous demande de récupérer les informations de ce dernier
depuis la sauvegarde..

Conclusion : vous aller vous retrouver avec deux clients 32 !

Lisez l'article que j'ai écrit sur le sujet :
http://sqlpro.developpez.com/cours/clefs/


A +


Merci






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Gilles LE BARBIER
> Est-ce un comportement normal ?


Oui

Car, de fait, à chaque transaction qui échoue j'ai un "trou" dans ce
compteur.



Oui

c'est un identifiant pas un code perso

si cela te gène gère toi même un auto-incrément :-)
Avec gestion des trous :-)

A+

Gilles