【问题标题】:What is PostgreSQL equivalent of INSERTING from Oracle?PostgreSQL 与 Oracle 的 INSERTING 等价物是什么?
【发布时间】:2016-06-05 02:40:45
【问题描述】:

我想创建一个触发器来捕获INSERTUPDATE 并根据动作执行某些操作。在 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中的TRIGGERhere一起使用可以看用法:

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

【问题讨论】:

标签: oracle postgresql triggers plpgsql database-trigger


【解决方案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();

更多细节的相关答案:

【讨论】:

    猜你喜欢
    • 2013-06-02
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    相关资源
    最近更新 更多