mysql wpf根据触发器刷新数据_plsql 触发器教程-当表1的某条数据更新时,表2的某些数据也自动更新...

触发器-update

需求:一张表的某个字段跟随另一张表的某个字段的值更新而更新

2张表

test001表

edfb845d46880613a9eb5a6740a6c11c.png

test002表:

dd66f20b4cc0bdeda71fed9e2ffc5722.png

新建触发器,当更新test001中的D为某个值x时,test002中的D(不一定是D,也可以是C)也变成x

例如:updatetest001 t1setD='7'wheret1.A='1';

当我手动更新test001表中 a字段为1的那条记录 ,把d更新为7时,那么要使test002表中a字段也为1的那条记录,自动更新为7,

那么触发器可以这样写:

create or replace trigger Test02Tr

after update of don test001

for each row

begin

update test002 t2 set t2.d = :new.d where exists (select * from test002where t2.a=:new.a);

end test02Tr;

需要注意的地方:new.字段表示的是在执行完某个更新操作后的那条数据记录,如果这里没有使用:new.字段而是使用test001的话,则会报错:

abe161a763695721b875b05cbc113a7a.pngup-de3eb730b2ae23a0aec84bfef14ae19f.jpg

错误sql:

create or replace trigger Test02Tr

after update of don test001

for each row

begin

update test002 t2set t2.d = :new.dwhere exists (select *from test002 t3,test001 t1where t1.a =t2.a);

end test02Tr;

最后,测试:

update test001 t1 set D='7'where t1.A='1';

执行完之后,2张表的D字段的值都是7

99d7d8cb859d96e3f95dca16c7a93135.png

5fe35b65c0cbc82d55eb97d438ae4165.png

如有疑问或改进的地方请指出,共同进步!

本文已获原作者授权

更多关于触发器的一些语法,比如为什么用for each row,不用for each statement 等,这些都是视具体情况的,

这些细节的使用,可以参考以下的文章:

这两篇把触发器的基本概念说的都很详细,大家可以参考以下。

本文分享 CSDN - 小小鱼儿小小林。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值