gpt4 book ai didi

mysql - 多个 SQL 触发器中的 If 语句

转载 作者:行者123 更新时间:2023-11-30 23:18:08 25 4
gpt4 key购买 nike

我需要一些有关 MySQL 触发器的帮助,我猜这应该很简单。我有一个由 3 个表(trable1、table2、table3)组成的数据库,每个表都有两列(column1、column2)。所以这就是我需要的。如果在 table1 中插入一行,我希望它自动复制到 table2 和 table3。对 table2 和 table3 的更新也是如此。但这里有一个技巧,我注意一个 if 条件,它检查该行是否已经存在,否则 SQL 会抛出一个错误。如果有任何帮助,我将不胜感激。

最佳答案

你想让它抛出错误还是避免它?

在第一种情况下,你可以做类似的事情

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;

If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row is performed.

阅读更多相关信息 here .

或者

INSERT IGNORE ....

If you use the IGNORE keyword, errors that occur while executing the INSERT statement are treated as warnings instead. For example, without IGNORE, a row that duplicates an existing UNIQUE index or PRIMARY KEY value in the table causes a duplicate-key error and the statement is aborted. With IGNORE, the row still is not inserted, but no error is issued.

阅读更多相关信息 here .

关于mysql - 多个 SQL 触发器中的 If 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16687969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com