oracle:一个update修改两张表 |
您所在的位置:网站首页 › sql语句两个表关联,更新其中一张表 › oracle:一个update修改两张表 |
需求:用一个update语句修改两张表?
思路:用触发器来解决 触发器代码: 表a:table_a,表b:table_b,其中表b里面有表a的id,这个触发器意思是当修改表a的最后修改人:table_a_last_chg_usr时,让表b的最后修改人字段也跟着修改table_b_last_chg_usr create or replace trigger table_a_demo after update on table_a for each row begin update table_b set table_b_last_chg_usr = :new.table_a_last_chg_usr where table_a_id = :old.table_a_id; end ;要执行的修改表a的语句: update table_a a set a.last_chg_usr='testDemo' where a.table_a_id ='101' 知识点补充: new关键字和old关键字:------最佳解决方案-------------------- oracle默认的 用old代表老数据 new代表新数据 不过二者在使用时是有限制的insert时 只有:new 没有:old delete时 只有:old 没有:new update时 二者都可用 ------其他解决方案--------------------:new --为一个引用最新的列值; :old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old; for each row:对表的每一行触发器执行一次。如果没有这一选项,即使变更多行则只对整个表执行一次。
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |