我有一个简单的问题。我有一个触发器将值插入另一个数据库
例如,如果有两个值,触发器正在检查 Table A
中的值并插入到 Table B
代码如下
-- Trigger DDL Statements
USE `db`;
DELIMITER //
CREATE
DEFINER=CURRENT_USER()
TRIGGER `db`.`AFTER_INSERT_A`
AFTER INSERT ON `db`.`a`
FOR EACH ROW
BEGIN
IF NEW.val!= NULL
THEN
UPDATE b SET dateRemove=CURRENT_TIMESTAMP WHERE val=NEW.val;
INSERT INTO b (val) VALUES(NEW.val) ON DUPLICATE KEY UPDATE dateRemove=NULL, dateUpdate=CURRENT_TIMESTAMP;
END IF;
END//
触发器甚至会抛出任何错误。我在 B 中没有值
我的插入是
INSERT INTO a (val) VALUES(`test`) ON DUPLICATE KEY UPDATE dateUpdate=CURRENT_TIMESTAMP
有没有人有任何想法。我尝试创建两个触发器,一个是 INSERT
,另一个是 UPDATE
,我已经将 AFTER
更改为 BEFORE
并且我的表 b
仍然一无所获。任何想法提前感谢
最佳答案
要在诸如
之类的查询上运行的触发器INSERT INTO table (x, y, z) VALUES('x', 'y', 'z') ON DUPLICATE KEY UPDATE x=VALUES(x);
必须始终在 BEFORE INSERT
触发器上运行。
关于mysql - 触发 INSERT ON DUPLICATE KEY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3162767/