什么是PostgreSQL与从Oracle插入的等价物?

什么是PostgreSQL与从Oracle插入的等价物?,oracle,postgresql,triggers,plpgsql,database-trigger,Oracle,Postgresql,Triggers,Plpgsql,Database Trigger,我想创建一个触发器,它捕捉INSERT和UPDATE,并根据动作执行某些操作。在Oracle中,可以执行以下操作: CREATE OR REPLACE TRIGGER ABC_BIU BEFORE INSERT OR UPDATE ON ABC FOR EACH ROW BEGIN IF INSERTING THEN ... END IF; ... END; 提到在Oracle中,插入是一个与触发器一起使用的关键字,您可以看到它的用法: IF INSERTING THEN

我想创建一个触发器,它捕捉
INSERT
UPDATE
,并根据动作执行某些操作。在Oracle中,可以执行以下操作:

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

 ...
END;
提到在Oracle中,
插入
是一个与
触发器
一起使用的关键字,您可以看到它的用法:

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

首先,您需要在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;
。。。然后可在触发器中使用(或多个):

有关答案及详情:


TG\u OP
参见手册:
CREATE TRIGGER abc_biu
BEFORE INSERT OR UPDATE ON abc
FOR EACH ROW EXECUTE PROCEDURE trg_abc_biu();