Microsoft SQL Server
PHANTOM читать
Поиск…
Вступление
замечания
Вы можете прочитать различные ISOLATION LEVEL
на MSDN
Уровень изоляции READ UNCOMMITTED
Создать образец таблицы в примерной базе данных
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]
Теперь откройте первый редактор запросов (в базе данных), вставьте приведенный ниже код и выполните ( не трогайте --rollback ), в этом случае вы вставляете строку в БД, но не совершаете изменений.
begin tran
INSERT INTO Table_1 values('Title 1')
SELECT * FROM [Test].[dbo].[Table_1]
--rollback
Теперь откройте второй редактор запросов (в базе данных), вставьте код ниже и выполните
begin tran
set transaction isolation level READ UNCOMMITTED
SELECT * FROM [Test].[dbo].[Table_1]
Вы можете заметить, что во втором редакторе вы можете увидеть только что созданную строку (но не зафиксированную) из первой транзакции. На первом редакторе выполните откат (выберите слово откат и выполните).
-- Rollback the first transaction
rollback
Выполните запрос во втором редакторе, и вы увидите, что запись исчезла (фантомное чтение), это происходит из-за того, что вы сообщаете второй транзакции, чтобы получить все строки, а также uncommitteds.
Это происходит, когда вы меняете уровень изоляции с помощью
set transaction isolation level READ UNCOMMITTED