删除行时,SQL 触发器中的 UPDATED() 函数是不是返回 true?
Posted
技术标签:
【中文标题】删除行时,SQL 触发器中的 UPDATED() 函数是不是返回 true?【英文标题】:Does UPDATED() function in SQL trigger return true when rows are deleted?删除行时,SQL 触发器中的 UPDATED() 函数是否返回 true? 【发布时间】:2015-03-26 18:21:42 【问题描述】:当您对带有触发器的表运行DELETE
语句时,在该触发器中UPDATE( colName )
函数是否会返回true?
【问题讨论】:
【参考方案1】:没有。 UPDATE(colName)
仅对 INSERT 和 UPDATE 返回 TRUE
set nocount on
go
create table test ( cola nvarchar(10), colB int default(0) )
go
create trigger tr_test on test for insert,update,delete
as
begin
select case when update(cola) then 'yes' else 'no' end as ColA_Updated,
case when update(colb) then 'yes' else 'no' end as ColB_Updated
end
go
-- This outputs 'yes', 'yes'
insert into test (cola) values ( 'a' )
-- This outputs 'yes', 'no'
update test set cola = 'b'
-- This outputs 'no', 'no'
delete from test where 1=0
-- This outputs 'no', 'no'
delete from test
go
drop trigger tr_test
drop table test
go
【讨论】:
以上是关于删除行时,SQL 触发器中的 UPDATED() 函数是不是返回 true?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sql server 执行 BEFORE UPDATED 触发器?