Postgresql

Postgres 列出使用儲存過程的約束

  • August 5, 2020

我有一個 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%'

引用自:https://dba.stackexchange.com/questions/223963