PostgreSQL pg_constraint

2021-09-14 10:35 更新

目錄pg_constraint存儲表上的檢查、主鍵、唯一、外鍵和排他約束(列約束也不會被特殊對待。每一個列約束都等同于某種表約束。)。非空約束不在這里,而是在pg_attribute目錄中表示。

用戶定義的約束觸發(fā)器(使用CREATE CONSTRAINT TRIGGER創(chuàng)建)也會在這個表中產(chǎn)生一項。

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

表 51.13. pg_constraint Columns

列類型

描述

oid oid

行標(biāo)識符

conname name

約束名字(不需要唯一!)

connamespace oid (references pg_namespace.oid)

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

contype char

c = 檢查約束, f = 外鍵約束, p = 主鍵約束, u = 唯一約束, t = 約束觸發(fā)器, x = 排他約束

condeferrable bool

該約束是否能被延遲?

condeferred bool

該約束是否默認(rèn)被延遲?

convalidated bool

此約束是否被驗證過?當(dāng)前對于外鍵和檢查約束只能是假

conrelid oid (references pg_class.oid)

該約束所在的表,如果不是表約束則為0

contypid oid (references pg_type.oid)

該約束所在的域,如果不是域約束則為0

conindid oid (references pg_class.oid)

如果該約束是唯一、主鍵、外鍵或排他約束,此列表示支持此約束的索引,否則為0

conparentid oid (references pg_constraint.oid)

如果這是一個分區(qū)中的約束,則是父分區(qū)表中對應(yīng)的約束;否則為0

confrelid oid (references pg_class.oid)

如果此約束是一個外鍵約束,此列為被引用的表,否則為0

confupdtype char

外鍵更新動作代碼: a = 無動作, r = 限制, c = 級聯(lián), n = 置空, d = 置為默認(rèn)值

confdeltype char

外鍵刪除動作代碼: a = 無動作, r = 限制, c = 級聯(lián), n = 置空, d = 置為默認(rèn)值

confmatchtype char

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

conislocal bool

此約束是定義在關(guān)系本地。注意一個約束可以同時是本地定義和繼承。

coninhcount int4

此約束的直接繼承祖先數(shù)目。一個此列非零的約束不能被刪除或重命名。

connoinherit bool

為真表示此約束被定義在關(guān)系本地。它是一個不可繼承約束。

conkey int2[] (references pg_attribute.attnum)

如果是一個表約束(包括外鍵但不包括約束觸發(fā)器),此列是被約束列的列表

confkey int2[] (references pg_attribute.attnum)

如果是一個外鍵,此列是被引用列的列表

conpfeqop oid[] (references pg_operator.oid)

如果是一個外鍵,此列是用于PK = FK比較的等值操作符的列表

conppeqop oid[] (references pg_operator.oid)

如果是一個外鍵,此列是用于PK = PK比較的等值操作符的列表

conffeqop oid[] (references pg_operator.oid)

如果是一個外鍵,此列是用于FK = FK比較的等值操作符的列表

conexclop oid[] (references pg_operator.oid)

如果是一個排他約束,此列是每列排他操作符的列表

conbin pg_node_tree

如果是一個檢查約束,此列是表達(dá)式的一個內(nèi)部表示。建議使用 pg_get_constraintdef()提取檢查約束的定義。


在一個排他約束的情況中, conkey只對約束元素是單一列引用時有用。對于其他情況,conkey為0且必須查閱相關(guān)索引來發(fā)現(xiàn)被約束的表達(dá)式(conkey因此和pg_index.indkey具有相同的內(nèi)容)。

注意

pg_class.relchecks需要和每個關(guān)系在此目錄中的檢查約束數(shù)量保持一致。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號