zoukankan      html  css  js  c++  java
  • oracle触发器中增删改查本表

    oracle触发器中增删改查本表
    (1)只有before insert触发器中才可以查询或更新本表
    create or replace trigger tri_test_ins
    before insert
    on test
    for each row
    declare
      v_cnt integer;
    begin
     select count(*) into v_cnt from test;
     dbms_output.put_line('test count:'||to_char(v_cnt));
     update test set a9='99';
    end;
    执行insert后,只有当前插入的记录值不是99,其它的记录都被更新成了99。
    (2)before/after update、before/after delete、after insert5种情况都不可以查询或更新本表。
    (3)使用自治事务可以实现任意触发器查本表。但不能实现在自治事务中更新本表。
      查询本表的情况是最常见的。
    create or replace trigger tri_test_ins
    after update
    on test
    for each row
    declare
      v_cnt integer;
      PRAGMA AUTONOMOUS_TRANSACTION;
    begin
     begin
            select count(*) into v_cnt from test;
            dbms_output.put_line('test count:'||to_char(v_cnt));
     end;
    end;
    (4)使用自治事务可以实现新增或删除本表的记录。这种情况一般不会用到。

  • 相关阅读:
    [JSOI2009] 游戏
    CF1148H Holy Diver
    [提高组集训2021] 模拟赛3
    CF1458F Range Diameter Sum
    [游记] CSP2021
    CF1396E Distance Matching
    CF1396D Rainbow Rectangles
    【LeetCode】1. 两数之和
    【随笔】开通博客园过程
    MyISAM与InnoDB的区别是什么?
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3192321.html
Copyright © 2011-2022 走看看