Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 重复键插入时触发_Mysql_Triggers - Fatal编程技术网

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呢?我知道这是旧的,但是你有证据证明这是真的吗?