Het gebruik van de timestamp-kolom van een tabel voor OCC. in SQL Server 2005


INLEIDING


De timestamp -kolom van een tabel kan worden gebruikt om te bepalen of een willekeurige waarde in de tabelrij is gewijzigd sinds de laatste keer dat de tabel werd gelezen. Een manier om de timestamp -kolom van een tabel gebruiken voor een besturingselement in een Microsoft SQL Server 2005 optimistische gelijktijdigheid wordt beschreven.

Meer informatie


U kunt een kolom tijdstempel toevoegen aan een tabel om de integriteit van de database te behouden wanneer gebruikers meerdere rijen tegelijk wilt bijwerken. U kunt ook te weten hoeveel rijen en welke rijen zonder het opnieuw opvragen van de tabel zijn bijgewerkt.

Stel bijvoorbeeld dat u een tabel met de naam MyTestmaken. U vult sommige gegevens in de tabel door de volgende Transact-SQL-instructies uit te voeren.
CREATE TABLE MyTest (myKey int PRIMARY KEY, myValue int, TS timestamp)
GO
INSERT INTO MyTest (myKey, myValue) VALUES (1, 0)
GO
INSERT INTO MyTest (mykey, myValue) VALUES (2, 0)
GO
Vervolgens kunt u de volgende monster Transact-SQL-instructies voor het implementeren van OCC. op de tabel MyTest tijdens de update.
DECLARE @t TABLE (myKey int)
UPDATE MyTest SET myValue = 2
OUTPUT inserted.myKey into @t(myKey)
WHERE myKey = 1 and TS = TSValueIF (SELECT COUNT(*) FROM @t) = 0
BEGIN
RAISERROR ('error changing row with myKey = %d',
16, -- Severity.
1, -- State.
1) -- myKey that was changed
END
Opmerking TSValue is de waarde van de tijdstempel voor de rij die de laatste keer dat u de rij leest aangeeft. Deze waarde moet worden vervangen door de tijdstempel van de werkelijke waarde. Een voorbeeld van de tijdstempel van de werkelijke waarde is 0x00000000000007D3.

U kunt ook de Transact-SQL-instructies monster in een transactie plaatsen. Bij het controleren van de variabele @t in het bereik van de transactie, kunt u de bijgewerkte myKey kolom van de tabel ophalen zonder de tabel MyTest opnieuw opvragen.

Ga naar de volgende website van Microsoft Developer Network (MSDN) voor meer informatie over het type van de kolom tijdstempel :