2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 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

52.13. pg_constraint #

目錄 pg_constraint 儲存表上的檢查、非空、主鍵、唯一、外部索引鍵和排除約束。(列約束不被特殊對待。每個列約束都等價於某個表約束。)

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

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

表 52.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

約束是否預設延遲?

conenforced bool

約束是否已強制執行?

convalidated bool

約束是否已驗證?

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 = 設定為 NULL,d = 設定為預設

confdeltype char

外部索引鍵刪除操作程式碼:a = 不執行操作,r = 限制,c = 級聯,n = 設定為 NULL,d = 設定為預設

confmatchtype char

外部索引鍵匹配型別:f = 完全,p = 部分,s = 簡單

conislocal bool

此約束是為該關係本地定義的。注意,約束可以同時是本地定義和繼承的。

coninhcount int2

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

connoinherit bool

此約束是為該關係本地定義的。它是一個不可繼承的約束。

conperiod bool

此約束是使用 WITHOUT OVERLAPS(用於主鍵和唯一約束)或 PERIOD(用於外部索引鍵)定義的。

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

如果是排除約束或 WITHOUT OVERLAPS 主鍵/唯一約束,則為每列排除運算子的列表。

conbin pg_node_tree

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


對於排除約束,conkey 僅對簡單的列引用約束元素有用。對於其他情況,conkey 中出現零,並且必須查閱關聯的索引以發現被約束的表示式。(因此 conkey 的內容與索引的 pg_index.indkey 的內容相同。)

注意

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

提交更正

如果您在本應正確的資訊中發現任何不正確之處,不符合您對特定功能的體驗,或需要進一步的澄清,請使用 此表格 來報告文件問題。