列を持つテーブルAがありますFamily ID, Name, Addr
。テーブル内で最近変更された行を見つけるにはどうすればよいですか?これは、テーブルに列を追加せずに実行できますか?
質問する
2756 次
3 に答える
2
いいえ、SQL Serverは、行がテーブルに追加されたとき、または変更されたときを追跡しません。列を追加してこれを行う必要があります。
ALTER TABLE dbo.A ADD RowAdded DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
もちろん、これにより既存のすべての行が現在に設定されるため、今後は新しい行に対してのみ機能します。時間も変更したい場合は、列を追加できます。
ALTER TABLE dbo.A ADD RowChanged DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
そして、トリガーで最新の状態に保ちます。
CREATE TRIGGER dbo.A_modified
ON dbo.A
FOR UPDATE
AS
BEGIN
UPDATE A SET RowChanged = CURRENT_TIMESTAMP
FROM dbo.A as A INNER JOIN inserted AS i
ON A.ID = i.ID;
END
GO
于 2012-07-19T12:16:25.607 に答える
0
変更時刻(またはタイムスタンプ)も書き込まない限り、これらの行を見つけることはできません。
変更されたIDをログに記録するトリガーを追加することもできますが、それはより良い解決策のようには思えません。
DMLステートメントによって変更されたデータを検索する場合は、OUTPUT句を使用できます。
于 2012-07-19T12:12:58.523 に答える
0
これを行う最も簡単な方法は、'lastUpdated`列を追加することです。それを除けば、これを達成するための本当に簡単な方法はありません。
于 2012-07-19T12:15:49.127 に答える