Mon exigence est d'extraire un identifiant unique de la base de données pour traitement sur le serveur d'applications (application en cluster) .Pour cela, j'ai une table avec une seule cellule contenant une valeur X. Cette valeur sera incrémentée chaque fois qu'il est récupéré.Transactions de base de données simultanées
BEGIN TRAN
UPDATE ID_TABLE SET VALUE = VALUE + 1
SELECT VALUE FROM ID_TABLE
END TRAN
Considérons un calendrier de deux transcations (T2 T1 &) se produisant comme suit. MISE À JOUR (T1), MISE À JOUR (T2), LIRE (T1), LIRE (T2)
Un tel entrelacement est-il possible, pour les transactions de base de données.
Existe-t-il des moyens d'éviter cela, sauf le fait d'acquérir un verrou sur la table, au début, et de le relâcher à la fin, ce qui va isoler la transaction?
est-il pas possible que le verrou exclusif de la ligne, est libéré après la déclaration de mise à jour. Ainsi, une transaction continue-t-elle de rassembler des verrous et ne les libère qu'une fois terminée? –
Cela dépend des niveaux d'isolation des transactions, je suppose. Mais les verrous "normalement" ne sont libérés que lorsque vous validez (ou annulez). – Thilo