Jumat, 29 November 2019

Trigger - PostgreSQL



CREATE TABLE account (
id serial primary key,
name text,
debt int,
balance int
);

CREATE TABLE account_audit(
id serial primary key,
db_user text NOT NULL default session_user,
operation text,
account_id int,
account_name text,
debt int,
balance int,
created_at timestamp with time zone default current_timestamp
);

-------------
CREATE FUNCTION account_audit_func()
RETURNS TRIGGER
AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
  INSERT INTO account_audit (operation, account_id, account_name, debt, balance) VALUES
       (TG_OP, NEW.*);
  RETURN NEW;
ELSIF TG_OP = 'UPDATE' THEN
   INSERT INTO account_audit (operation, account_id, account_name, debt, balance) VALUES
        (TG_OP, NEW.*);
   RETURN NEW;
ELSIF TG_OP = 'DELETE' THEN
   INSERT INTO account_audit (operation, account_id, account_name, debt, balance) VALUES
        (TG_OP, OLD.*);
   RETURN OLD;
END IF;
END;
$$
LANGUAGE plpgsql;

----
CREATE TRIGGER account_audit_trigger
AFTER INSERT OR UPDATE OR DELETE ON account
FOR EACH ROW EXECUTE PROCEDURE account_audit_func();

----
-- ,lastupdate,aksi,hostname,username)
CREATE OR REPLACE FUNCTION zz_mbpr_triger()
  RETURNS trigger AS
$BODY$
BEGIN
 IF NEW.id_entry <> OLD.id_entry THEN
 INSERT INTO zz_mbpr_hist(id,id_entry,bpr,lastupdate,aksi,hostname,username)
 VALUES(old.id, OLD.id_entry,OLD.last_name,old.bpr,now(),'UPDATE', HOST,USER);
 END IF;

-----
CREATE TRIGGER trg_acc_account_number_UPDATE_DELETE
AFTER UPDATE OR DELETE ON public.acc_account_number
FOR EACH ROW EXECUTE PROCEDURE AuditTable.trg_AuditDML();

Tidak ada komentar:

Posting Komentar

Dynamic Query - SQL Server

Berikut adalah contoh dari bentuk dari Dynamic Query di SQL Server yang dibungkus ke dalam Store Procedure:  USE [Data00] GO SET ANSI_NULLS ...

Popular Posts