Microsoft SQL Server
Lectura fantasma
Buscar..
Introducción
Observaciones
Puede leer los distintos ISOLATION LEVEL
en MSDN
Nivel de aislamiento LEER SIN COMPROMISO
Crear una tabla de muestra en una base de datos de muestra
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]
Ahora abra un Editor de primera consulta (en la base de datos) inserte el código a continuación y ejecute ( no toque el --rollback ) en este caso, inserte una fila en la base de datos pero no confirme los cambios.
begin tran
INSERT INTO Table_1 values('Title 1')
SELECT * FROM [Test].[dbo].[Table_1]
--rollback
Ahora abra un Segundo Editor de consultas (en la base de datos), inserte el código a continuación y ejecute
begin tran
set transaction isolation level READ UNCOMMITTED
SELECT * FROM [Test].[dbo].[Table_1]
Puede observar que en el segundo editor puede ver la fila recién creada (pero no confirmada) de la primera transacción. En el primer editor, ejecute el rollback (seleccione la palabra rollback y ejecute).
-- Rollback the first transaction
rollback
Ejecute la consulta en el segundo editor y verá que el registro desaparece (lectura fantasma), esto ocurre porque le dice a la segunda transacción que obtenga todas las filas, también las no confirmadas.
Esto ocurre cuando cambias el nivel de aislamiento con
set transaction isolation level READ UNCOMMITTED