【发布时间】:2016-02-18 00:52:06
【问题描述】:
出于多种原因,我需要在两个表中拥有相同的数据。我正在启动新系统,并且在短时间内我需要同时运行两个系统,问题是旧系统没有那么好的 MySQL 结构,因此无法保持原样。我不想更改旧的或新的系统配置。我认为他最好的解决方案是在新旧表上放置一些触发器,如下所示:
DROP TRIGGER IF EXISTS table1_table2;
DELIMITER $$
CREATE TRIGGER `table1_table2` AFTER INSERT ON `table1`
FOR EACH ROW
BEGIN
IF(@disable_triggers != 1) THEN
SET @disable_triggers = 1;
INSERT INTO table2 (value1,value2)
VALUES( NEW.value1, NEW.value2 );
END IF;
SET @disable_triggers = 0;
END$$
DELIMITER ;
DROP TRIGGER IF EXISTS table2_table1;
DELIMITER $$
CREATE TRIGGER `table2_table1` AFTER INSERT ON `table2`
FOR EACH ROW
BEGIN
IF(@disable_triggers != 1) THEN
SET @disable_triggers = 1;
INSERT INTO table1 (value1,value2)
VALUES( NEW.value1, NEW.value2 );
END IF;
SET @disable_triggers = 0;
END$$
DELIMITER ;
起初我尝试创建没有 IF 条件的触发器,但它失败了,因为 table1 被锁定,所以第二个触发器无法写入它。我决定添加@disable_triggers 全局变量以防止循环运行触发器,但是插入后什么也没发生,有什么建议吗?
【问题讨论】:
-
为什么需要两张表?删除一个并用视图替换它
-
谢谢,希望一切顺利