やり方
以下は「public
スキーマ内で、UPDATED_AT
カラムを持ち、set_timestamp
トリガーが設定されていないテーブルの一覧を取得する」クエリです。
細かい部分はコメントに記載しています。
SELECT c.table_name
FROM information_schema.columns c
LEFT JOIN information_schema.triggers t ON t.event_object_table = c.table_name
AND t.event_object_schema = c.table_schema -- 同名別スキーマ対策でスキーマも指定
AND t.trigger_name = 'set_timestamp' -- JOIN対象はset_timestampトリガーのみ
WHERE c.table_schema = 'public'
AND c.column_name ILIKE 'UPDATED_AT' -- 取得対象はUPDATED_ATのあるテーブル(定義は大文字だが、POSTGRES上は小文字扱いなため、ILIKEで検索している)
AND t.trigger_name IS NULL; -- JOINできなかった = set_timestamp未設定のみ対象