Recherche…


Introduction

Dans les systèmes de base de données, l'isolation détermine la manière dont l'intégrité des transactions est visible par les autres utilisateurs et systèmes. Elle définit donc comment et quand les modifications apportées par une opération deviennent visibles par les autres. La lecture fantôme peut se produire lorsque vous obtenez des données qui ne sont pas encore validées dans la base de données.

Remarques

Vous pouvez lire les différents ISOLATION LEVEL sur MSDN

Niveau d'isolement LISEZ ICI

Créer un exemple de table sur une base de données exemple

CREATE TABLE [dbo].[Table_1](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [title] [varchar](50) NULL,
 CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

Maintenant, ouvrez un éditeur de première requête (sur la base de données) insérez le code ci-dessous et exécutez ( ne touchez pas le --rollback ) dans ce cas, vous insérez une ligne dans la base de données mais ne validez pas les modifications.

begin tran

INSERT INTO Table_1 values('Title 1')

SELECT * FROM [Test].[dbo].[Table_1]

--rollback

Maintenant, ouvrez un Second Query Editor (sur la base de données), insérez le code ci-dessous et exécutez

begin tran

set transaction isolation level READ UNCOMMITTED

SELECT * FROM [Test].[dbo].[Table_1]

Vous remarquerez peut-être que sur le second éditeur, vous pouvez voir la ligne nouvellement créée (mais non validée) de la première transaction. Sur le premier éditeur, exécutez la restauration (sélectionnez le mot de restauration et exécutez-le).

-- Rollback the first transaction
rollback

Exécutez la requête sur le second éditeur et vous voyez que l'enregistrement disparaît (lecture fantôme), cela se produit parce que vous dites à la 2ème transaction que vous obtenez toutes les lignes, y compris les non validées.

Cela se produit lorsque vous modifiez le niveau d'isolement avec

set transaction isolation level READ UNCOMMITTED


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow