次の構造を持つデータベースtesttable
内にテーブルtestbase
を作成しました。
product_no (int, not null)
product_name (varchar(30), not null)
price (money, null)
expire_date (date, null)
expire_time (time(7), null)
ただし、変更された(または新しい情報で更新された)特定の行を更新し、expire_date
フィールドに変更日を記録し、expire_time
フィールドに変更時間を記録するようにトリガーを作成するにはどうすればよいですか? (またはこれが可能かどうか)
かなり簡単ですが、実際には、データを挿入/更新するコマンドのロジックを変更して、この時点で追加情報を追加することをお勧めします。
ただし、トリガーを続行したい場合は、次のようにすることができます。
create trigger my_trigger
on my_table
after insert, update
as
begin
declare @dt datetime = getdate();
update a
set expire_date = CONVERT(DATE, @dt, 101),
expire_time = CONVERT(TIME, @dt)
from my_table as a
join inserted as b
on a.product_no = b.product_no;
end
go
これはINSERTED
テーブルを使用して、変更/作成された行のproduct_no
を見つけます。トリガーについて詳しくは、以下のリンクをご覧ください。
http://msdn.Microsoft.com/en-us/library/ms189799.aspx
これがお役に立てば幸いです。