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;
| Mode | Fires During Replication |
| ENABLE (default) | Origin only |
| ENABLE REPLICA | Replica only |
| ENABLE ALWAYS | Both |
| DISABLE | Never |
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
| Order | Detail |
| Within same timing | Alphabetical by trigger name |
| BEFORE | Run before constraints |
| AFTER | Run 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';