SQL Server触发器更新(col)如果插入的值等于原始值,则为true还是false?

Eri*_*zke 1 sql t-sql sql-server triggers

鉴于此简单示例触发器:

CREATE TRIGGER example_update
ON example_table
FOR UPDATE
AS BEGIN
   if update(someColumn) begin
      update example_table SET last_update_date = GETDATE() WHERE id IN (SELECT id FROM inserted);
   end
END
Run Code Online (Sandbox Code Playgroud)

如果someColumn的旧值和someColumn的新值相等,update(someColumn)是返回true还是false?例如,如果我运行这两个SQL语句:

UPDATE example_table SET someColumn=1;
UPDATE example_table SET someColumn=1;
Run Code Online (Sandbox Code Playgroud)

第二个语句是否触发了触发器中的if块?

另外,如果我执行此操作,我的推定是正确的:

UPDATE example_table SET otherColumn=1;
Run Code Online (Sandbox Code Playgroud)

然后在我的触发器中更新(someColumn)将返回false.

我很抱歉,如果这是一个重复:该函数被称为更新的事实已经使我的搜索结果充满了更新状态(与更新函数非常不同),并且使我很难确定这种行为.

Aar*_*and 12

UPDATE()函数不区分值是否已更改,仅区分列已更新.为此,您应该比较inserteddeleted伪表中的值.