MSSQL 的update使用问题

我曾经见过在SQL语句里写

if update(字段名)
begin
........
end

这里的update(字段名)是什么意思啊?
~~~补充一下,确实是update(...)不是updated(...)~~~

还有,它的原理是什么啊?是怎么实现这个功能的?请大侠指教了

这是触发器中的语句,应该是if updated(字段名)
意思是如果(字段名)这个字段被更新了,则执行以下语句

确实是我写错了,补充:

UPDATE触发器的工作过程

可将UPDATE语句看成两步操作:即捕获数据前像(before image)的DELETE语句,和捕获数据后像(after image)的INSERT语句。当在定义有触发器的表上执行UPDATE语句时,原始行(前像)被移入到deleted表,更新行(后像)被移入到inserted表。

触发器检查deleted表和inserted表以及被更新的表,来确定是否更新了多行以及如何执行触发器动作。

可以使用IF UPDATE语句定义一个监视指定列的数据更新的触发器。这样,就可以让触发器容易的隔离出特定列的活动。当它检测到指定列已经更新时,触发器就会进一步执行适当的动作,例如发出错误信息指出该列不能更新,或者根据新的更新的列值执行一系列的动作语句。

语法

IF UPDATE (<column_name>)

例1

本例阻止用户修改Employees表中的EmployeeID列。

USE Northwind
GO
CREATE TRIGGER Employee_Update --创建触发器
ON Employees --在Employees表创建
FOR UPDATE --当执行update时执行此触发器
AS
IF UPDATE (EmployeeID) --如果EmployeeID有被更新
BEGIN
RAISERROR ('Transaction cannot be processed.\
***** Employee ID number cannot be modified.', 10, 1) --使用RAISERROR输出错误提示
ROLLBACK TRANSACTION --回滚事务,取消update更新事件
END
温馨提示:答案为网友推荐,仅供参考
相似回答