有没有办法在Mysql中的两个不同的数据库上创建触发器?我的要求是这样的:-
database: test1 -> table: tmp1
database: test2 -> table: tmp2
现在我必须在 test1 上使用触发器插入操作发生在 tmp1 上,必须将值插入到 test2 数据库的 tmp2 中。反之亦然。
即在 test2 数据库的 tmp2 表上再添加一个触发器,如果插入到 tmp2,则插入到 test1 数据库的 tmp1 表。
我尝试在两者上编写触发器,但我认为它将进入循环以插入彼此的表。
DELIMITER $$
CREATE TRIGGER trigger_ad_t1 AFTER insert ON `test1`.tmp1
FOR EACH ROW
Begin
INSERT INTO `test2`.tmp2 VALUES (NEW.employeeNumber,New.fname,New.lname)
END$$
DELIMITER ;
为在插入 tmp2 表后插入 tmp1 而编写的相同类型的触发器。
另一件事是,我在具有 mysql 5.1.63 的本地电脑上测试了此触发器,但是当我在具有 mysql 5.0.45 的测试服务器上尝试此触发器时,它给了我语法错误(1064)。不知道是什么问题?
UPDATE:
谁能帮我摆脱它。
Thanks
在触发器中使用完全限定的表名称。
I.e.
db1.test1.*
and d2.test2.*
附:再次查看你的 SQL 后我意识到你ARE已经做了上面的事情了。
编辑:注释字段仅限于邮政代码,因此以下是防止无限插入循环的方法(假设employeeNumber是唯一键):
编辑后的代码:
IF NOT EXISTS(SELECT employeeNumber FROM otherDB.otherTable WHERE employeeNumber = NEW.employeeNumber) THEN
INSERT INTO otherDB.otherTable VALUES (NEW.employeeNumber,New.fname,New.lname)
END IF;
原来提供的代码需要更正:... EXISTS(SELECT * FROM otherDB.otherTable ...)
被替换为
... EXISTS(SELECT employeeNumber FROM otherDB.otherTable ...)
原因是第一个查询总是返回true
因为内部查询SELECT * FROM ...
始终返回一条包含结果数的记录 =>
EXISTS(SELECT * FROM ...)
总是true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)