قیدهای NOT VALID و triggerهای غیرفعال: نگهبانهای خوابیده
فهرست میکنه قیدهای CHECK/FK رو که با NOT VALID ساخته شدن (و هیچوقت دوباره اعتبارسنجی نشدن) و triggerهای غیرفعال رو: قواعد کسبوکاری که دیتابیس دیگه اعمالشون نمیکنه.
کاربرد
بعد از یه مهاجرت «سریع»: پیدا کردن اعتبارسنجیهایی که عقب انداخته شدن و ماهها فراموش شدن.
پیشنیازها
PostgreSQL (pg_constraint, pg_trigger)
SQL
SELECT
'constraint' AS type_objet,
con.conrelid::regclass::text AS table_name,
con.conname AS nom,
'NOT VALID — données existantes jamais vérifiées' AS probleme
FROM pg_constraint con
WHERE NOT con.convalidated
AND con.contype IN ('c', 'f')
UNION ALL
SELECT
'trigger',
tg.tgrelid::regclass::text,
tg.tgname,
'désactivé (tgenabled = D)'
FROM pg_trigger tg
WHERE tg.tgenabled = 'D'
AND NOT tg.tgisinternal
ORDER BY type_objet, table_name;نتیجه
type_objet | table_name | nom | probleme ------------+-------------+--------------------------+------------------------------------------------- constraint | invoices | fk_invoices_customer | NOT VALID — données existantes jamais vérifiées constraint | order_lines | chk_qty_positive | NOT VALID — données existantes jamais vérifiées trigger | customers | trg_audit_customers | désactivé (tgenabled = D) trigger | stock | trg_stock_recalc | désactivé (tgenabled = D) (4 rows) Remède : ALTER TABLE ... VALIDATE CONSTRAINT / ALTER TABLE ... ENABLE TRIGGER
SQLAuditContraintesTriggers