43.10. pg_constraint

系統表 pg_constraint 存儲表上的檢查約束、主鍵、唯一約束和外鍵 約束。(字段約束不會得到特殊對待。每個字段約束都等效于某些表約束。) 參閱 CREATE TABLE 獲取更多信息。

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

Table 43-10. pg_constraint 字段

名字類型引用描述
connamename 約束名字(不一定是唯一的!)
connamespaceoidpg_namespace.oid 包含這個約束的名字空間的 OID
contypechar  c = 檢查約束, f = 外鍵約束, p = 主鍵約束, u = 唯一約束
condeferrableboolean 這個約束可以推遲嗎?
condeferredboolean 缺省時這個約束是否推遲的?
conrelidoidpg_class.oid這個約束所在的表;如果不是表約束則為 0
contypidoidpg_type.oid這個約束所在的域;如果不是一個域約束則為 0
confrelidoidpg_class.oid如果是外鍵,則為參考的表;否則為 0
confupdtypechar 外鍵更新動作代碼
confdeltypechar 外鍵刪除動作代碼
confmatchtypechar 外鍵匹配類型
conkeyint2[]pg_attribute.attnum如果是表約束,則是約束控制的字段列表
confkeyint2[]pg_attribute.attnum如果是一個外鍵,是參考的字段的列表
conbintext 如果是檢查約束,那就是其表達式的內部形式
consrctext 如果是檢查約束,則是表達式的人類可讀形式

注意: consrc 在被引用的對象改變之後不會被更新, 它不會跟蹤字段的名字修改。與其依賴這個字段,我們最好還是使用 pg_get_constraintdef() 來抽取一個檢查約束的定義。

注意: pg_class.relchecks 需要和在此表上為給定關系找到的檢查約束的數目一致。