什么是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();