触发器外部表引用

时间:2018-04-29 20:26:55

标签: sql mariadb

我使用MariaDB作为我的数据库,我遇到了一些创建触发器的问题。代码如下:

    CREATE TRIGGER `trigger` BEFORE INSERT ON `table_1` FOR EACH ROW 
     BEGIN
        IF NOT CONTAINS(`db`.`table_2`.`item`, NEW.item) THEN
            INSERT INTO `db`.`table_2` (`item`, `item_2`, `item_3`) VALUES (NEW.item, "foo", 
            "bar");
     END IF;
     END

问题是table_2与table_1一起在数据库“db”中,但是当运行此代码时,它给出了以下错误:

SQL Error (1109): Unknown table 'table_2' in field list

我对此非常困惑,因为看起来我应该能够通过我正在阅读的所有内容来做到这一点。我想要做的就是在一个表中强制插入,以便在不满足条件时插入另一个表。

1 个答案:

答案 0 :(得分:0)

我猜你打算:

 CREATE TRIGGER `trigger` BEFORE INSERT ON `table_1` FOR EACH ROW 
 BEGIN
    IF NOT EXISTS (SELECT 1 FROM db.table_2 t2 WHERE CONTAINS(t2.item, NEW.item) THEN
        INSERT INTO `db`.`table_2` (`item`, `item_2`, `item_3`)
            VALUES (NEW.item, 'foo', 'bar');
     END IF;
 END;