支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

51.13. pg_constraint #

目錄 pg_constraint 儲存表格上的檢查約束、主鍵約束、唯一約束、外鍵約束和排除約束,以及網域上的非空約束。(欄位約束沒有特別處理。每個欄位約束都等同於某個表格約束。)關係上的非空約束在 pg_attribute 目錄中表示,而不是在這裡。

使用者定義的約束觸發器(使用 CREATE CONSTRAINT TRIGGER 建立)也會在此表格中產生一個項目。

網域上的檢查約束也儲存在這裡。

表 51.13. pg_constraint 欄位

欄位 類型

說明

oid oid

列識別碼

conname name

約束名稱(不一定是唯一的!)

connamespace oid(參考 pg_namespace.oid

包含此約束的命名空間的 OID

contype char

c = 檢查約束,f = 外鍵約束,n = 非空約束(僅限網域),p = 主鍵約束,u = 唯一約束,t = 約束觸發器,x = 排除約束

condeferrable bool

約束是否可以延遲?

condeferred bool

約束預設是否延遲?

convalidated bool

約束是否已驗證?目前,只能對外鍵和 CHECK 約束為 false

conrelid oid(參考 pg_class.oid

此約束所在的表格;如果不是表格約束則為零

contypid oid(參考 pg_type.oid

此約束所在的網域;如果不是網域約束則為零

conindid oid(參考 pg_class.oid

支援此約束的索引,如果它是唯一約束、主鍵約束、外鍵約束或排除約束;否則為零

conparentid oid(參考 pg_constraint.oid

父分割表格的對應約束,如果這是分割區上的約束;否則為零

confrelid oid(參考 pg_class.oid

如果是外鍵,則為參考的表格;否則為零

confupdtype char

外鍵更新動作代碼:a = 無動作,r = 限制,c = 串聯,n = 設定為空值,d = 設定為預設值

confdeltype char

外鍵刪除動作代碼:a = 無動作,r = 限制,c = 串聯,n = 設定為空值,d = 設定為預設值

confmatchtype char

外鍵比對類型:f = 完整,p = 部分,s = 簡單

conislocal bool

此約束是針對關係在本機定義的。請注意,約束可以同時在本機定義和繼承。

coninhcount int2

此約束具有的直接繼承祖先數量。具有非零祖先數量的約束無法刪除或重新命名。

connoinherit bool

此約束是針對關係在本機定義的。這是一個不可繼承的約束。

conkey int2[](參考 pg_attribute.attnum

如果是表格約束(包括外鍵,但不包括約束觸發器),則為受約束的欄位清單

confkey int2[](參考 pg_attribute.attnum

如果是外鍵,則為參考的欄位清單

conpfeqop oid[] (參考 pg_operator.oid)

如果是外鍵,列出 PK = FK 比較時的相等運算子。

conppeqop oid[] (參考 pg_operator.oid)

如果是外鍵,列出 PK = PK 比較時的相等運算子。

conffeqop oid[] (參考 pg_operator.oid)

如果是外鍵,列出 FK = FK 比較時的相等運算子。

confdelsetcols int2[] (參考 pg_attribute.attnum)

如果是具有 SET NULLSET DEFAULT 刪除動作的外鍵,則為將被更新的欄位。如果為 null,則所有參考欄位都將被更新。

conexclop oid[] (參考 pg_operator.oid)

如果是排除約束,則列出每個欄位的排除運算子。

conbin pg_node_tree

如果是檢查約束,則為表示式的內部表示法。(建議使用 pg_get_constraintdef() 來提取檢查約束的定義。)


在排除約束的情況下,conkey 僅對於作為簡單欄位參考的約束元素有用。對於其他情況,conkey 中會出現零,並且必須查詢關聯索引以發現受約束的表示式。(因此,conkey 具有與 pg_index.indkey 相同的內容。)

注意

pg_class.relchecks 需要與此表中針對每個關係找到的檢查約束條目的數量一致。

提交更正

如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的內容,請使用 此表單 回報文件問題。