2016-07-12 13 views
0

Ist es möglich, nur einen Trigger in Oracle zu erstellen, der vor und nach dem Einfügen von Daten in eine Tabelle ausgelöst wird?Oracle-Trigger vor und nach dem Einfügen

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; 

Also gibt es eine Flagge, die anzeigt, ob es vor oder nach dem Einfügen?

+2

[Verbindung TRIGGER] (http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/triggers.htm#CIHEFGFD). –

Antwort

4

Es kann wie folgt geschrieben werden.

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;