-- Enforce immutable tracecoin ledger: no UPDATE/DELETE allowed. CREATE OR REPLACE FUNCTION prevent_tracecoin_ledger_mutation() RETURNS trigger AS $$ BEGIN RAISE EXCEPTION 'tracecoin_ledger is immutable; % is not allowed', TG_OP; END; $$ LANGUAGE plpgsql; DROP TRIGGER IF EXISTS trg_prevent_tracecoin_ledger_update ON tracecoin_ledger; CREATE TRIGGER trg_prevent_tracecoin_ledger_update BEFORE UPDATE ON tracecoin_ledger FOR EACH ROW EXECUTE FUNCTION prevent_tracecoin_ledger_mutation(); DROP TRIGGER IF EXISTS trg_prevent_tracecoin_ledger_delete ON tracecoin_ledger; CREATE TRIGGER trg_prevent_tracecoin_ledger_delete BEFORE DELETE ON tracecoin_ledger FOR EACH ROW EXECUTE FUNCTION prevent_tracecoin_ledger_mutation();