我有一个简单的问题。我有一个触发器将值插入另一个数据库
例如,如果有两个值且触发器正在检查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
仍未得到任何结果。任何想法提前感谢
答案 0 :(得分:10)
要在
等查询上运行的触发器INSERT INTO table (x, y, z) VALUES('x', 'y', 'z') ON DUPLICATE KEY UPDATE x=VALUES(x);
必须始终在BEFORE INSERT
触发器上运行。
答案 1 :(得分:2)
也许不是
NEW.val!= NULL
你需要
NEW.val IS NOT NULL
值永远不会等于null,并且永远不等于null。