我有下面的触发器,并试图了解它应该做什么。我不是dba,但我想了解下面的剧本。
这是否意味着每次IT01_Incorporates表发生更新(插入,删除,更新)时,DateUpdated列都会使用当前日期更新? 我实际上想知道,通过应用下面的触发器,DateUpdated列什么时候应该更新?插入,删除和更新?
我也想理解:set nocount on。
的含义非常感谢
DateUpdated列是日期时间类型
CREATE trigger [dbo].[TR_IT01_Update]
on [dbo].[IT01_Incorporates]
for update
as
set nocount on
begin
update IT01_Incorporates
set DateUpdated = getdate()
where exists (
select 1 from inserted where incorpuid = IT01_Incorporates.incorpuid
)
end
答案 0 :(得分:2)
如果您查看脚本,您将在标题行中看到条款for update
。这表示它仅用于更新。
要进行插入和更新,您必须将其更改为for insert, update
。您也可以添加, delete
以使其在DELETE上触发,但触发器在这种情况下不起作用,因为不再有任何记录要更新。
答案 1 :(得分:1)
让我们说一年前在.NET程序中添加了以下SQL语句:
UPDATE IT01_Incorporates set field1=@Field1, field2=@Field2, Field3=@Field3 where id=@id
让我们说你的一位DBA同事昨天更改了表格如下:
ALTER TABLE IT01_Incorporates ADD DateUpdated datetime
而不是修改代码;他/她可以创建一个触发器作为临时措施,以确保每次更新时都更新DateUpdated。