Microsoft SQL Server
PHANTOM lesen
Suche…
Einführung
Bemerkungen
Sie können die verschiedenen ISOLATION LEVEL
auf MSDN lesen
Isolationsstufe LESEN UNBESTIMMT
Erstellen Sie eine Beispieltabelle für eine Beispieldatenbank
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]
Öffnen Sie nun einen Ersten Abfrage-Editor (in der Datenbank), fügen Sie den folgenden Code ein und führen Sie ihn aus ( berühren Sie nicht das --rollback ). In diesem Fall fügen Sie eine Zeile in die Datenbank ein, ohne Änderungen zu übernehmen.
begin tran
INSERT INTO Table_1 values('Title 1')
SELECT * FROM [Test].[dbo].[Table_1]
--rollback
Öffnen Sie nun einen zweiten Abfrage-Editor (in der Datenbank), geben Sie den folgenden Code ein und führen Sie ihn aus
begin tran
set transaction isolation level READ UNCOMMITTED
SELECT * FROM [Test].[dbo].[Table_1]
Möglicherweise stellen Sie fest, dass im zweiten Editor die neu erstellte Zeile (jedoch nicht festgeschrieben) aus der ersten Transaktion angezeigt wird. Führen Sie im ersten Editor das Rollback aus (wählen Sie das Rollback-Wort aus und führen Sie es aus).
-- Rollback the first transaction
rollback
Führen Sie die Abfrage im zweiten Editor aus, und Sie sehen, dass der Datensatz verschwunden ist (Phantom Read). Dies geschieht, weil Sie der zweiten Transaktion mitteilen, alle Zeilen und auch die nicht festgeschriebenen Daten abzurufen.
Dies tritt auf, wenn Sie die Isolationsstufe mit ändern
set transaction isolation level READ UNCOMMITTED