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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ***********************
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 ***********************
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 ***********************
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
> 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 :-)