2016-02-23 19 views
-4

我想創建一個觸發器,捕獲INSERTUPDATE並根據動作執行某些操作。在Oracle這是可以做到這樣:什麼是PostgreSQL等同於從Oracle插入?

CREATE OR REPLACE TRIGGER ABC_BIU BEFORE INSERT OR UPDATE ON ABC 
FOR EACH ROW 
BEGIN 
    IF INSERTING THEN 
    ... 
    END IF; 

... 
END; 

Here提到,INSERTING是一起使用,在Oracle中TRIGGER和關鍵詞here你可以看到這種用法:

IF INSERTING THEN ... END IF; 
IF UPDATING THEN ... END IF; 
+4

'TG_OP'見手冊:http://www.postgresql.org/docs/current/static/plpgsql-trigger.html –

回答

1

首先,你需要一個單獨的觸發功能在Postgres的:

CREATE OR REPLACE FUNCTION trg_abc_biu() 
    RETURNS trigger AS 
$func$ 
BEGIN 
    CASE TG_OP   -- to fork depending on operation 
    WHEN ' INSERT' THEN 
     -- do something 
    WHEN ' UPDATE' THEN 
     -- do something 
    ELSE 
     RAISE EXCEPTION 'This trigger function expects INSERT or UPDATE!'; 
    END CASE; 

    RETURN NEW; 
END 
$func$ LANGUAGE plpgsql; 

...,其然後可以在觸發(或幾個)中使用:

CREATE TRIGGER abc_biu 
BEFORE INSERT OR UPDATE ON abc 
FOR EACH ROW EXECUTE PROCEDURE trg_abc_biu(); 

相關答案更多的細節:

相關問題