mysql触发器求指点,存储过程可以实现么? 40C

mysql:表C由表A、表B关联生成,表A、表B数据变化后通过触发器将变化后记录插入到表C中,小白提问,最好是有大神给个demo

3个回答

用视图不是更好么?写一条sql查询表A和表B得关联查询,表A和表B数据变化,视图自动发生变化,要数据直接从视图查询就行了,还不用维护触发器。

要将c表同步到其他库,如果有办法在视图使用指针,然后取出来赋给c表也行,数据小白不知道怎么操作,可不可以操作,所以请教各路大神

Lei_Da_Gou
Lei_Da_Gou 表A和表B得关联查询得数据非要另存一张表吗?
10 个月之前 回复
Lei_Da_Gou
Lei_Da_Gou 我上面说得视图就指得你得表C
10 个月之前 回复

有些想法仅供参考
这里有表A,B,C
表A数据:a
表B:b
表C:a,b

CREATE TRIGGER chage_a after update FOR EACH ROW //给A加
begin
DECLARE A_a VARCHAR(20) character set utf8; //定义变量,可指定默认值,
DECLARE B_b VARCHAR(20) character set utf8;
A_a=NEW.a //new是触发事件update的,代表将要或者已经改变的数据
select b as d from B where.......//这里要加条件 ,是你关联表的条件,比如说你是通过两个表相同的id生成的a,b,就那个意思了
B_b = d //额这里这样赋值不知道对不对哈,我也很久没写了,可以查一下
INSERT INTO C(a,b) values(A_a,B_b);
end

CREATE TRIGGER chage_b after update FOR EACH ROW //给B加
DECLARE A_a VARCHAR(20) character set utf8; //定义变量,可指定默认值,
DECLARE B_b VARCHAR(20) character set utf8;
B_b=NEW.b //new是触发事件update的,代表将要或者已经改变的数据
select a as d from A where.......//这里要加条件 ,是你关联表的条件,比如说你是通过两个表相同的id生成的a,b,就那个意思了
A_a = d //额这里这样赋值不知道对不对哈,我也很久没写了,可以查一下
INSERT INTO C(a,b) values(A_a,B_b);
begin

end

这个原理呢就是说,比如A中变了,就取出A中改变的数据和B中与A相关联的数据,将它们插入表C
对于B表也一样
这样应该能达到你的要求,希望有用

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问