0
我写了一个AFTER UPDATE
触发器,用于更新表ABC
的列abc_xyz
。当有人试图更新同一张表的列ans_mode
时,触发器应该触发。 abc_xyz
的默认值为0
。触发器应将其更新为1
。AFTER UPDATE触发器
CREATE OR REPLACE TRIGGER switchtrigger
AFTER UPDATE OF ans_mode
ON ABC
BEGIN
UPDATE ABC
SET abc_xyz = 1
WHERE abc_xyz= 0 AND ;
END;
我想写一个AND
条件,以便只更新那些特定的行。
谢谢贾维斯, 我试着写行触发器,但得到了突变表错误,因为更新在同一个表中完成。 ABC_XYZ的默认值为0.因此,查询中提到的IF条件会更新所有行。 我只需要更新那些用户/某人进行更改的行。 –
在行触发器中,您不能执行任何访问声明表的表的SQL语句 - 这就是“mutating table”错误的全部内容。 ON UPDATE行触发器只会针对根据声明的条件实际更改的行调用,因此此触发器只会影响ABC.ANS_MODE已更改的那些行。我建议你写一些代码并测试一下。 –
对不起,延迟回复。 谢谢贾维斯。我测试过,它工作。 如果我使用After update触发器会产生什么区别(除了更新后会触发) –