我需要一些关于MySQL触发器的帮助,我猜它应该很简单。我有一个由3个表(trable1,table2,table3)组成的数据库,每个表都有两列(column1,column2)。所以这就是我需要的。如果在table1中插入一行,我希望将其自动复制到table2和table3。同样,对table2和table3进行更新。但这是一个技巧,我注意一个if条件,它检查行是否已经存在,否则SQL会抛出一个错误。我真的很感激任何帮助。
答案 0 :(得分:0)
你想要它抛出一个错误,还是你想避免它?
在第一种情况下,您可以执行类似
的操作IF EXISTS (SELECT 1 FROM table2or3 WHERE col1 = NEW.col1) THEN
SIGNAL ...
END IF;
详细了解信号here。
如果您不想抛出错误,也可以
INSERT INTO foo(col1, col2) VALUES (NEW.col1, NEW.col2)
ON DUPLICATE KEY UPDATE whatever = whatever;
如果指定ON DUPLICATE KEY UPDATE,并且插入的行将导致UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行的UPDATE。
详细了解here。
或者
INSERT IGNORE ....
如果使用IGNORE关键字,则执行INSERT语句时发生的错误将被视为警告。例如,如果没有IGNORE,则复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误,并且语句将中止。使用IGNORE时,仍未插入行,但未发出错误。
详细了解here。