插入时多个数据库触发器
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中的触发器从另外两个表中插入一个表中的数据