【问题标题】: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;