Jak używać tabeli kolumny sygnatury czasowej dla optymistycznego sterowania współbieżnością w programie SQL Server 2005


WPROWADZENIE


Kolumny sygnatury czasowej tabeli może służyć do określenia, czy każda wartość w wierszu tabeli zmienił się od czasu ostatniego odczytu tabeli. W tym artykule opisano sposób korzystania z kolumny sygnatury czasowej tabeli dla optymistycznego sterowania współbieżnością w Microsoft SQL Server 2005.

Więcej informacji


Kolumny sygnatury czasowej można dodać do tabeli w celu utrzymania integralności bazy danych podczas aktualizowania wierszy wielu użytkowników w tym samym czasie. Można również dowiedzieć się, ile wierszy i wiersze, które zostały zaktualizowane bez ponownego wykonywania zapytania w tabeli.

Załóżmy, że tworzysz tabelę o nazwie Test. Niektóre dane w tabeli jest wypełnić uruchamiając następujące instrukcje języka Transact-SQL.
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
Następujące przykładowe instrukcje języka Transact-SQL umożliwia następnie implementować kontrolę optymistycznej współbieżności na MyTest Tabela podczas aktualizacji.
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
Uwaga: TSValue jest wartość kolumny sygnatury czasowej dla wiersza, który wskazuje Data i godzina ostatniego odczytu wiersza. Ta wartość muszą zostać zastąpione wartością rzeczywisty sygnatur czasowych . Przykład wartości rzeczywiste sygnatury czasowej jest 0x00000000000007D3.

Można również umieścić przykładowe instrukcji języka Transact-SQL w transakcji. Za pomocą kwerend zmiennej @t w zakresie transakcji, można pobrać zaktualizowane myKey kolumna tabeli bez ponownego wykonywania zapytania w tabeli MyTest .

Aby uzyskać więcej informacji o typie kolumny sygnatury czasowej odwiedź następującą witrynę Microsoft Developer Network (MSDN) w sieci Web: