-4

我想创建一个触发器,该触发器可以捕获INSERTUPDATE基于该操作执行某些操作。在 Oracle 中可以这样做:

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

 ...
END;

这里提到了这是一个与OracleINSERTING中的关键字一起使用的关键字,在这里您可以看到用法:TRIGGER

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

1 回答 1

3

首先,你需要在 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();

更多详细信息的相关答案:

于 2016-02-25T03:51:29.577 回答