博客
关于我
plsql 触发器教程-当表1的某条数据更新时,表2的某些数据也自动更新
阅读量:143 次
发布时间:2019-02-27

本文共 927 字,大约阅读时间需要 3 分钟。

触发器-update

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

2张表

 test001表

test002表:

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

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

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

那么触发器可以这样写:

     

create or replace trigger Test02Trafter update of don test001for each rowbeginupdate test002  t2 set t2.d = :new.d where exists (select * from test002where  t2.a=:new.a);end test02Tr;

 

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

错误sql:

create or replace trigger Test02Trafter update of don test001for each rowbeginupdate 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

 

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

本文已获原作者授权

原贴链接:

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

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

1、

2、

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

你可能感兴趣的文章
nativescript(angular2)——ListView组件
查看>>
NativeWindow_01
查看>>
Native方式运行Fabric(非Docker方式)
查看>>
Nature | 电子学“超构器件”, 从零基础到精通,收藏这篇就够了!
查看>>
Nature和Science同时报道,新疆出土四千年前遗骸完成DNA测序,证实并非移民而是土著...
查看>>
Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论...
查看>>
Nat、端口映射、内网穿透有什么区别?
查看>>
Nat、端口映射、内网穿透有什么区别?
查看>>
nat打洞原理和实现
查看>>
NAT技术
查看>>
NAT模式/路由模式/全路由模式 (转)
查看>>
NAT模式下虚拟机centOs和主机ping不通解决方法
查看>>
NAT的两种模式SNAT和DNAT,到底有啥区别?
查看>>
NAT的全然分析及其UDP穿透的全然解决方式
查看>>
NAT类型与NAT模型详解
查看>>
NAT网络地址转换配置实战
查看>>
NAT网络地址转换配置详解
查看>>
navbar navbar-inverse 导航条设置颜色
查看>>
Navicat for MySQL 命令列 执行SQL语句 历史日志
查看>>
Navicat for MySQL 查看BLOB字段内容
查看>>