Mysql 重复键插入时触发
我有一个简单的问题。我有一个触发器,可以将这些值插入另一个数据库 例如,如果有两个值,触发器正在检查Mysql 重复键插入时触发,mysql,triggers,Mysql,Triggers,我有一个简单的问题。我有一个触发器,可以将这些值插入另一个数据库 例如,如果有两个值,触发器正在检查表A中的值,并插入表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 T
表A中的值,并插入表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
有人有什么想法吗。我尝试创建了两个触发器,一个是插入,另一个是更新,我把之后的改为之前的,我的表b
仍然没有结果。有什么想法,请提前谢谢,也许可以代替
NEW.val!= NULL
你需要
NEW.val IS NOT NULL
值永远不等于null,也永远不等于null。在诸如
INSERT INTO table (x, y, z) VALUES('x', 'y', 'z') ON DUPLICATE KEY UPDATE x=VALUES(x);
在插入触发器之前,必须始终在上运行。这是一个很好的问题,也是一个老问题。那么,如果你想在触发器内同时得到OLD.val和NEW.val呢?我知道这是旧的,但是你有证据证明这是真的吗?