Microsoft SQL Server
PHANTOM lezen
Zoeken…
Invoering
Opmerkingen
U kunt de verschillende ISOLATION LEVEL
lezen op MSDN
Isolatieniveau LEZEN ONGESCHAKELD
Maak een voorbeeldtabel in een voorbeelddatabase
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]
Open nu een eerste query-editor (in de database), voer de onderstaande code in en voer uit ( raak de --rollback niet aan ). In dit geval voegt u een rij in op DB maar voert u geen wijzigingen door.
begin tran
INSERT INTO Table_1 values('Title 1')
SELECT * FROM [Test].[dbo].[Table_1]
--rollback
Open nu een tweede query-editor (in de database), voer de onderstaande code in en voer deze uit
begin tran
set transaction isolation level READ UNCOMMITTED
SELECT * FROM [Test].[dbo].[Table_1]
Het is u misschien opgevallen dat u in de tweede editor de nieuw gemaakte rij (maar niet vastgelegd) van de eerste transactie kunt zien. Voer in de eerste editor de rollback uit (selecteer het rollback-woord en voer uit).
-- Rollback the first transaction
rollback
Voer de query uit in de tweede editor en je ziet dat het record verdwijnt (fantoom lezen), dit gebeurt omdat je aan de 2e transactie vertelt om alle rijen te krijgen, ook de niet-vastleggingen.
Dit gebeurt wanneer u het isolatieniveau wijzigt met
set transaction isolation level READ UNCOMMITTED