【问题标题】:MySQL Insert Trigger not working with If Then ConditionalMySQL 插入触发器不适用于 If Then Conditional
【发布时间】:2015-04-13 21:02:30
【问题描述】:

我在mysql中创建了以下触发器:

DELIMITER $$
CREATE TRIGGER `some_trigger` AFTER INSERT ON db1.table
FOR EACH ROW
BEGIN

IF NEW.userid = 'certain_id' THEN

INSERT INTO db2.table
SET

value1 = NEW.value,
value2 = NEW.value;

END IF;
END $$

DELIMITER ;

如果我删除 if 语句,上述语句有效。此外,将此触发器添加到 db 时不会遇到语法错误。知道 if 语句在添加到 db1.table 时不允许它在 userid 列中插入值为“certain_id”的条目有什么问题吗??

【问题讨论】:

  • 它是如何失败的?语法错误、其他错误、意外结果?
  • db1.table.userid 的数据类型是什么,你的'certain_id' 文字的实际值是什么?
  • 完全没有错误,只是没有插入值。触发器已成功添加到数据库。 Userid 是通过 uuid 在另一个表中创建的 VARCHAR(255)。我还尝试将变量设置为另一个表中 id 定义的值,但它不起作用,所以我将其删除以缩小问题范围。
  • 'certain_id' 文字的实际值是多少?
  • '4125b2a0-2e43-11e2-b4a4-0022681f4c37'

标签: mysql if-statement triggers sql-insert


【解决方案1】:

试试这个应该可以的..

DELIMITER $$

CREATE TRIGGER `some_trigger` AFTER INSERT ON `db1`.`table`
FOR EACH ROW

BEGIN

    IF (NEW.userid = 'certain_id') THEN

        INSERT INTO `db2`.`table` (value1, value2)
            VALUES (NEW.value1,NEW.value2);

    END IF;

END $$
DELIMITER ;

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 2016-10-13
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多