博客
关于我
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、

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

你可能感兴趣的文章
Mysql主从不同步
查看>>
mysql主从同步及清除信息
查看>>
MySQL主从同步相关-主从多久的延迟?
查看>>
mysql主从同步配置方法和原理
查看>>
mysql主从复制 master和slave配置的参数大全
查看>>
MySQL主从复制几个重要的启动选项
查看>>
MySQL主从复制及排错
查看>>
mysql主从复制及故障修复
查看>>
MySQL主从复制的原理和实践操作
查看>>
webpack loader配置全流程详解
查看>>
mysql主从复制,读写分离,半同步复制实现
查看>>
MySQL主从失败 错误Got fatal error 1236解决方法
查看>>
MySQL主从架构与读写分离实战
查看>>
MySQL主从篇:死磕主从复制中数据同步原理与优化
查看>>
mysql主从配置
查看>>
MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10038)的解决办法
查看>>
MySQL之CRUD
查看>>
MySQL之DML
查看>>
Mysql之IN 和 Exists 用法
查看>>
MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法
查看>>