Code Bye

MySQL怎么实现两张表的同步

有两张表A和B,要求往A里面插入一条记录的同时要向B里面也插入一条记录,向B里面插入一条记录的同时也向A插入一条记录。两张表的结构不同,只需要将其中几个字段对应起来。
用触发器只能实现一张表的新记录向另一张表里面插入,不能实现相互插入。有什么办法能够实现相互插入?
解决方案

5

用1个存储过程封装,通过参数分别插入A/B表

25

你不改动程序和接口的情况下,只能用触发器
这样用,刚试了个例子
drop table if exists ttab1,ttab2;
CREATE TABLE TTab1(ID INT UNIQUE,Name NVARCHAR(50));
CREATE TABLE TTab2(ID INT UNIQUE,Name NVARCHAR(50));
truncate table TTab1;
truncate table TTab2;
drop trigger if exists tr_TTab1;
drop trigger if exists tr_TTab2;
delimiter || 
create trigger tr_TTab1 after insert on TTab1
for each row
begin
set @disable=1;
if @disable=1 and NOT EXISTS(SELECT 1 FROM ttab2 where ID=new.ID) then 
    insert into TTab2(ID,Name) values(new.ID,new.Name);
end if; 
set @disable=0;
end||
create trigger tr_TTab2 after insert on TTab2
for each row
begin
set @disable=1;
if @disable=1 and NOT EXISTS(SELECT 1 FROM ttab1 where ID=new.ID) then 
	insert into TTab1(ID,Name) values(new.ID,new.Name);
end if; 
set @disable=0;
end||
delimiter ;
#测试新增TTab1
INSERT INTO TTab1
        ( ID, Name )
VALUES  ( 1, -- ID - int
          "Roy1"  -- Name - nvarchar(50)
          );
#测试新增TTab2
INSERT INTO TTab2
        ( ID, Name )
VALUES  ( 2, -- ID - int
          "Roy1"  -- Name - nvarchar(50)
          );
select ID,Name from TTab1;
select ID,Name from TTab2;
          
          

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明MySQL怎么实现两张表的同步