Kam*_*mil 0 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;
Run Code Online (Sandbox Code Playgroud)
这里提到that是Oracle中INSERTING与the结合使用的一个关键字,在这里你可以看到用法:TRIGGER
IF INSERTING THEN ... END IF;
IF UPDATING THEN ... END IF;
Run Code Online (Sandbox Code Playgroud)
首先,在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;
Run Code Online (Sandbox Code Playgroud)
...然后可以在一个(或多个)触发器中使用:
CREATE TRIGGER abc_biu
BEFORE INSERT OR UPDATE ON abc
FOR EACH ROW EXECUTE PROCEDURE trg_abc_biu();
Run Code Online (Sandbox Code Playgroud)
具有更多详细信息的相关答案: