Jac*_*ack 10 trigger sql-server-2008 row-modification-time
我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)
Run Code Online (Sandbox Code Playgroud)
但是,如何编写触发器,以便它更新已修改(或使用新信息更新)的特定行,并将修改日期记录到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
Run Code Online (Sandbox Code Playgroud)
这使用该INSERTED
表找出product_no
已更改/创建的行。您可以在以下链接中找到有关触发器的更多信息:
http://msdn.microsoft.com/en-us/library/ms189799.aspx
我希望这可以帮助你。
归档时间: |
|
查看次数: |
48020 次 |
最近记录: |