Pemicu di Postgres tidak memberikan kode pemicu secara langsung, tetapi memanggil fungsi pemicu , yang dapat dipanggil dari sejumlah pemicu, meskipun sering kali pemicu tersebut disesuaikan untuk satu peristiwa tertentu pada satu tabel tertentu.
Fungsi pemicu:
CREATE OR REPLACE FUNCTION trg_some_tbl_foo()
RETURNS trigger AS
$func$
BEGIN
INSERT INTO some_tbl(key, name, describe) -- or some_other_tbl?
VALUES (OLD.key, OLD.name, OLD.describe);
RETURN OLD;
END
$func$ LANGUAGE plpgsql
CREATE TRIGGER foo -- not: "CREATE OR REPLACE" !
AFTER UPDATE OR DELETE ON some_tbl
FOR EACH ROW EXECUTE PROCEDURE trg_some_tbl_foo()
-
Jadikan
AFTER
pemicu untuk menyederhanakan. SebuahBEFORE
pemicu harusRETURN NEW
untuk membuat pembaruan berfungsi, tetapiNEW
tidak terlihat dalamDELETE
pemicu. Jadi, Anda perluIF TG_OP = ...
dll. -
Selalu berikan daftar target untuk
INSERT
yang bertahan pernyataan. Ini sama buruknya dengan pemicu Oracle. -
Anda mungkin memiliki tabel dengan
serial
kolom. Jangan menyebutkannya di sisipan, id berikutnya dari urutan dimasukkan secara otomatis.
Ada banyak contoh kode di sini di SO.