更新mysql中的特定列后触发一个触发器

时间:2013-10-03 07:11:32

标签: mysql

在MySQL中,我想在更新特定列后触发触发器, 在Oracle和DB2中,我知道该怎么做:

CREATE  TRIGGER  myTrigger
AFTER UPDATE of myColumn1,myColumn2 ... ON myTable
FOR EACH ROW
BEGIN
....
END

如何用MySQL做到这一点?

3 个答案:

答案 0 :(得分:42)

您无法在SQL中触发特定列更新。它被应用于一行。

你可以将你的条件列入你的触发器,如下所示:

DELIMITER //
CREATE TRIGGER myTrigger AFTER UPDATE ON myTable
FOR EACH ROW
BEGIN
IF NEW.column1 <=> OLD.column1 THEN
--type your statements here
END IF;
END;//
DELIMITER ;

答案 1 :(得分:6)

作为解决方案,我确实喜欢这样:

CREATE  TRIGGER  myTrigger
AFTER UPDATE  ON myTable
FOR EACH ROW
BEGIN
IF NEW.myColumn1 <> OLD.myColumn1 || NEW.myColumn2 <> OLD.myColumn2
then

.....

END IF
END

答案 2 :(得分:5)

您不能仅指定触发特定的列更改。但是对于桌子上的记录更改,你可以做到

delimiter |
CREATE  TRIGGER  myTrigger AFTER UPDATE ON myTable
FOR EACH ROW
BEGIN
   ...
END
|
delimiter ;

在触发器中,您可以参考此列的新旧内容

if NEW.column1 <> OLD.column1 ...