même si l'insertion/commis est ne réussit pas, la séquence ne pas backtracks. Ce qui signifie que la prochaine fois que je pourrais faire une insertion à la table, cela pourrait être une lacune dans le numéro de séquence.
Oui, c'est vrai, et c'est très bien. On veut généralement une séquence pour obtenir des valeurs dans une table qui sont uniques (généralement pour un PK) et les lacunes ne comptent pas du tout.
Si vous êtes curieux: c'est un comportement naturel si l'on pense à la concurrence. Supposons qu'une transaction T1 insère une ligne, récupère une PK1 d'une séquence, utilise cette valeur pour construire d'autres enregistrements dans d'autres tables ... entre-temps (avant que T1 ne commette) une autre transaction T2 insère une ligne dans la même table. Ensuite, les annulations T1 et les validations T2 ...
BTW: Si vous voulez une séquence "sans interstice" ... demandez-vous d'abord si vous voulez vraiment cela (en général, vous ne le faites pas vraiment - et vous devez pointer fréquemment vers un problème conceptuel dans votre conception) ... mais si vous en avez vraiment besoin, vous pouvez lire this.
Suite en haut: Vous ne devriez vraiment pas vous inquiéter des "trous" dans une clé de substitution. Le faire (selon mon expérience) indique un substitut qui n'est pas assez opaque. Et dans la mesure où une séquence, il est garanti augmentation monotone (à moins de réinitialiser) alors ... –
même si elle est en augmentation devrait être superflue –
droite, je l'ai eu les gars. Merci pour l'explication. – goh