【问题标题】:Oracle trigger before and after insert插入前后的Oracle触发器
【发布时间】:2016-07-12 21:24:19
【问题描述】:

是否可以在 Oracle 中只创建一个在数据插入表之前和之后触发的触发器?

begin

if inserting THEN
   -- This code should be run before insertion:
   :new.cr_timestamp := SYSTIMESTAMP;

   IF :NEW.id IS NULL THEN
      SELECT sq_table_id.NEXTVAL
      INTO :NEW.id
      FROM dual;
   END IF;

-- Now I want code which run after the insertion..

end if;

end;

那么是否有一个标志表明它是在插入之前还是之后?

【问题讨论】:

标签: oracle oracle11g database-trigger


【解决方案1】:

可以写成下面这样。

CREATE OR REPLACE TRIGGER compound_trigger_name
FOR [INSERT|DELETE|UPDATE [OF column] ON table
COMPOUND TRIGGER

--Executed before DML statement
     BEFORE STATEMENT IS
     BEGIN
       NULL;
     END BEFORE STATEMENT;

   --Executed aftereach row change- :NEW, :OLD are available
     AFTER EACH ROW IS
     BEGIN
       NULL;
     END AFTER EACH ROW;

     --Executed after DML statement
     AFTER STATEMENT IS
     BEGIN
       NULL;
     END AFTER STATEMENT;

END compound_trigger_name;

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2017-06-26
    相关资源
    最近更新 更多