插入时多个数据库触发器

Posted

技术标签:

【中文标题】插入时多个数据库触发器【英文标题】:Multiple database trigger on insert 【发布时间】:2012-07-15 05:41:41 【问题描述】:

在跨数据库创建触发器时遇到一些问题。

我正在通过 phpmyadmin 进行此查询。

如果我执行以下操作,我会收到一条错误消息,提示未选择数据库。

delimiter // 
DROP trigger if exists t1// 
CREATE trigger t1 AFTER INSERT ON db1.d1t
FOR EACH ROW BEGIN

INSERT INTO db2.d2t SET ID=NEW.ID;

END// 
delimiter ;

如果我在 Phpmyadmin 中导航到 db1,然后执行以下操作:

delimiter // 
DROP trigger if exists t1// 
CREATE trigger t1 AFTER INSERT ON db1t
FOR EACH ROW BEGIN

INSERT INTO db2.db2t SET ID=NEW.ID;

END// 
delimiter ;

创建了触发器,但它试图在 db1.db2.db2t 触发时插入。

非常感谢任何帮助。

编辑: 两个表都是 INNODB mysql 服务器 v. 5.1.61 phpmyadmin v. 3.4.5

【问题讨论】:

【参考方案1】:

试试这个(已编辑):

USE db1;

DROP TRIGGER IF EXISTS t1;

DELIMITER //

CREATE TRIGGER t1 AFTER INSERT ON d1t
FOR EACH ROW BEGIN
  INSERT INTO db2.d2t
    (ID)
  VALUES
    (NEW.ID);
END//

DELIMITER ;

这对我有用。

【讨论】:

我玩过这个,我得到 USE is not allowed in stored procedures. @Zac 没错,我收到了同样的信息,但以上内容对我有用。 是的,我也知道了。您必须在数据库之外,然后在插入中使用USE DB,然后只需使用db2.t。非常感谢您的帮助。这必须是在数据库中设置触发器的 phpmyadmin 错误。非常感谢您的宝贵时间。

以上是关于插入时多个数据库触发器的主要内容,如果未能解决你的问题,请参考以下文章