有两张表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;