41.10. pg_constraint

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

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

Table 41-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 需要和在此資料表上為給定關係找到的檢查約束的數目一致。