我構建了這個 SQL:
SELECT
indexname
FROM pg_indexes
WHERE schemaname = 'foo' AND
tablename = 'foo'
它回傳我一個表的所有索引。但是,我希望顯示索引名稱和索引型別,例如 UNIQUE 或 PRIMARY。
uj5u.com熱心網友回復:
您可以從 pg_index(不是 pg_indexes)獲取此資訊,如下所示:
SELECT it.relname, i.indisunique, i.indisprimary
FROM pg_index i
INNER JOIN pg_class ct on i.indrelid = ct.oid
INNER JOIN pg_class it on i.indexrelid = it.oid
WHERE ct.relname = 'foo';
作為解釋,pg_index 的 indrelid 列包含它所屬表的 oid(在 pg_class 中),而 indexrelid 是索引本身的 oid。
uj5u.com熱心網友回復:
您可以將查詢更改為以下內容。indexdef您可以從索引定義 ( )中識別鍵是否唯一。請注意,主鍵也是唯一的。
SELECT
case when upper(indexdef) like '%UNIQUE%' then 'UNIQUE' else 'NOT_UNIQUE' end as case
FROM pg_indexes
WHERE schemaname = 'foo' AND
tablename = 'foo'
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/521710.html
