Postgresql
Postgres 列出使用儲存過程的約束
我有一個 postgres 數據庫(v9.6)並且我有多個
CHECK
使用使用者定義函式的約束。就像是:
CREATE TABLE payment ( amount bigint, CONSTRAINT amount_gt_0 CHECK (round_amount(amount) > 0) );
其中
round_amount
是使用者定義的函式。是否可以獲得所有約束或至少使用此類約束的表的列表?
postgresql 版本是 9.6
看起來已經有一個名為information_schema.check_constraint_routine_usage的視圖提供此資訊。
該視圖最初僅顯示目前角色擁有的常式,但您可以通過鍵入
\d+ information_schema.check_constraint_routine_usage
和調整來找到原始查詢。
你是這個意思嗎?
SELECT cls.relname, const.conname, const.consrc FROM pg_catalog.pg_constraint const INNER JOIN pg_catalog.pg_class cls ON cls.oid = const.conrelid INNER JOIN pg_catalog.pg_namespace ns ON ns.oid = const.connamespace WHERE ns.nspname = '<your_schema>' AND const.contype = 'c' AND const.consrc like '%round_amount%'