插入时多个数据库触发器

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 错误。非常感谢您的宝贵时间。

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

Oracle之触发器

触发器处理表更新

如何使用oracle中的触发器从另外两个表中插入一个表中的数据

数据库触发器:插入时

sql server 数据库里设置了当插入数据时,便触发器插入更新时间,但我导入数据时,触发器却没有工作。

是否可以创建一个触发器,该触发器在将记录插入一个数据库但最终插入另一个数据库时执行?