Managing Triggers

1. Dropping Trigger

DROP TRIGGER IF EXISTS orders_audit ON orders;

2. Disabling Trigger

ALTER TABLE orders DISABLE TRIGGER orders_audit;

3. Enabling Trigger

ALTER TABLE orders ENABLE TRIGGER orders_audit;

4. Disabling All Triggers

ALTER TABLE orders DISABLE TRIGGER ALL;     -- includes RI triggers
ALTER TABLE orders DISABLE TRIGGER USER;    -- user-defined only
Warning: Disabling ALL also disables foreign-key triggers; data integrity may break.

5. Enabling All Triggers

ALTER TABLE orders ENABLE TRIGGER ALL;

6. Using ENABLE ALWAYS

ALTER TABLE orders ENABLE ALWAYS TRIGGER audit_trg;
ModeFires During Replication
ENABLE (default)Origin only
ENABLE REPLICAReplica only
ENABLE ALWAYSBoth
DISABLENever

7. Using ENABLE REPLICA

ALTER TABLE orders ENABLE REPLICA TRIGGER audit_trg;
SET session_replication_role = 'replica';   -- session-level switch

8. Understanding Trigger Execution Order

OrderDetail
Within same timingAlphabetical by trigger name
BEFORERun before constraints
AFTERRun after constraints

9. Renaming Trigger

ALTER TRIGGER orders_audit ON orders RENAME TO trg_orders_audit;

10. Viewing Trigger Definition

SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgname='trg_orders_audit';