ModifiedDate
最新の状態に保つには、基本的に2つの選択肢があります。
その列に制約を定義してDEFAULT
、行を新たに挿入したときに現在の日付/時刻を取得し、その行に対するすべての更新操作AFTER UPDATE
の後に更新するトリガーを作成しますModifiedDate
データベースへのすべての保存操作の前に、クライアントアプリケーションでを設定しModifiedDate
ます
更新:トリガーを作成する場合は、次のAFTER UPDATE
ようなコードを使用します。
CREATE TRIGGER trg_UpdateModifiedDate
ON dbo.YourTableHere
AFTER UPDATE
AS
UPDATE dbo.YourTableHere
SET ModifiedDate = GETDATE()
WHERE AddressID IN (SELECT AddressID FROM Inserted)
YourTableHere
ここでは、テーブルにある種の主キーがあると想定しています。これは、ID
各単一行を一意かつ明確に識別するような列です。その行に基づいてModifiedDate
、特定のSQLステートメントによって更新されたすべての行を更新できます。Inserted
は、トリガーコード本体内で使用できる疑似テーブルであり、このトリガーを起動する原因となった操作によって変更されたすべての行が含まれます(UPDATE
上のステートメントの影響を受けるすべての行YourTableHere
)
トリガーの詳細については、こちらをご覧ください。
更新#2:ModifiedDate
列が実際にSQL Serverテーブルレベルで計算されている場合、直接更新することはできません。何から計算されているかを調べてから、その列を変更する必要があります(可能な場合)。
何から計算されているかを確認するには、SQLServerデータベースで次のクエリを実行します。
SELECT
c.name, c.is_computed, c.definition
FROM
sys.computed_columns c
WHERE
object_id = OBJECT_ID('dbo.Contacts')
AND c.Name = 'ModifiedDate'