Microsoft アカウントでサインイン
サインインするか、アカウントを作成します。
こんにちは、
Select a different account.
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

はじめに

前回のテーブルが読み取られた後、テーブルの行の任意の値が変更されたかどうかを判断するのには、テーブルのtimestamp列を使用できます。この資料では、Microsoft SQL Server 2005 では、オプティミスティック同時実行制御のテーブルのタイムスタンプ列を使用する方法について説明します。

詳細

複数ユーザーが同時に行を更新するときに、データベースの整合性を維持するためにテーブルにtimestamp列を追加できます。行の数とテーブルの再クエリを実行せずに行が更新されたを知っているすることもできます。

たとえば、 MyTestという名前のテーブルを作成することを想定しています。テーブル内のデータを設定するには、以下の 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

更新中にMyTestテーブルでオプティミスティック同時実行制御を実装するために以下の Transact SQL ステートメントの例を使用できます。

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

TSValueは、最後に行を読むことを示す行のタイムスタンプ列の値です。この値は、実際のタイムスタンプの値で置き換える必要があります。実際のタイムスタンプ値の例は、0x00000000000007D3 です。

トランザクションへの Transact SQL ステートメントの例を追加することもできます。トランザクションのスコープ内で@t変数のクエリを実行するには、 MyTestテーブルのクエリを再実行することがなくテーブルの更新済みのmyKey列を取得できます。

タイムスタンプ列のデータ型の詳細については、次の Microsoft Developer Network (MSDN) Web サイトを参照してください。

http://msdn2.microsoft.com/en-us/library/ms182776.aspx

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

ご意見をいただきありがとうございます。

×