J'utilise SQL Server Express 2008 w/AdventureWorksLT2008 DB pour comprendre la différence entre Read Committed & Lecture non validée.SQL Understand Lire commis et lecture non validée
Selon Wikipedia: http://en.wikipedia.org/wiki/Isolation_%28database_systems%29
READ COMMITTED
Les enregistrements de données récupérées par une requête sont pas empêché de modification par d'autres transactions.
Supposons qu'il ya une table nommée SalesLT.Address et une colonne AddressLine2 toutes les lignes qui ont une valeur vide
Alors je lance cette requête:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
BEGIN TRANSACTION
update SalesLT.Address set AddressLine2 = 'new value'
BEGIN TRANSACTION
select AddressLine2 from SalesLT.Address
--Break Here
/*
COMMIT TRANSACTION
COMMIT TRANSACTION
*/
Ainsi, vous pouvez voir que la première transaction n'a pas encore été validée, et la seconde commence interroger les données.
Il en résulte:
Alors, pourquoi la deuxième transaction peut être récupéré les données fantômes même la 1ère transaction toujours pas engagée?
Pour ajouter this- ouvrir une nouvelle fenêtre de requête SQL (ce qui établit en fait une nouvelle connexion) et de tenter d'interroger votre table pendant que votre autre connexion est-il modifié dans une transaction, et vous verrez ce que vous attendez ici, votre table sera verrouillée. –