?
Ce document utilise Manuel du site Web PHP chinois Libérer
pg_constraint存儲表上的檢查約束、主鍵、唯一約束和外鍵約束。字段約束不會得到特殊對待。 每個字段約束都等效于某些表約束。非空約束記錄在pg_attribute目錄中,不是這。
用戶定義的約束觸發(fā)器(創(chuàng)建CREATE CONSTRAINT TRIGGER)也引起本表中的條目。
在域上面的檢查約束也存儲在這里。
Table 45-12. pg_constraint Columns
名稱 | 類型 | 引用 | 描述 |
---|---|---|---|
conname | name | ? | 約束名(不必是唯一的) |
connamespace | oid | pg_namespace.oid | 包含這個約束的名字空間的OID |
contype | char | ? | c = 檢查約束, f = 外鍵約束, p = 主鍵約束, u = 唯一約束 t = 約束觸發(fā)器 x = 排斥約束 |
condeferrable | bool | ? | 這個約束可以推遲嗎? |
condeferred | bool | ? | 缺省時這個約束是否推遲的? |
conrelid | oid | pg_class.oid | 這個約束所在的表;如果不是表約束則為0 |
contypid | oid | pg_type.oid | 這個約束所在的域;如果不是一個域約束則為0 |
conindid | oid | pg_class.oid | 如果它是獨特的,主鍵,外鍵,或者排除約束,索引支持約束,否則為0 |
confrelid | oid | pg_class.oid | 如果是外鍵,則為引用表;否則為 0 |
confupdtype | char | ? | 外鍵更新動作編碼 a = 沒動作, r = 限制, c = 級聯(lián), n =設置為null, d =設置為缺省 |
confdeltype | char | ? | 外鍵刪除動作編碼 a = 沒動作, r = 限制, c = 級聯(lián), n =設置為null, d =設置為缺省 |
confmatchtype | char | ? | 外鍵匹配類型 f = 全部, p = 部分, u = 簡單(未指定) |
conislocal | bool | ? | 這個約束來定義局部的關系。請注意, 約束可以在本地同時定義和繼承。 |
coninhcount | int4 | ? | 這個約束有直接繼承祖先的數(shù)目。不能刪除具有約束非零數(shù)字的祖先,也不能更名。 |
conkey | int2[] | pg_attribute.attnum | 如果一個表約束(包括外鍵,但沒有約束觸發(fā)器),則是約束控制的字段列表 |
confkey | int2[] | pg_attribute.attnum | 如果是一個外鍵,是引用字段的列表 |
conpfeqop | oid[] | pg_operator.oid | 如果是一個外健,列出相等運算PK = FK 比較的字段列表 |
conppeqop | oid[] | pg_operator.oid | 如果是一個外健,是相等運算PK = FK 比較的字段列表 |
conffeqop | oid[] | pg_operator.oid | 如果是一個外健,是相等運算PK = FK 比較的字段列表 |
conexclop | oid[] | pg_operator.oid | 如果是一個排除約束,是每一列排斥操作符的字段列表 |
conbin | text | ? | 如果是檢查約束,那就是其表達式的內(nèi)部形式 |
consrc | text | ? | 如果是檢查約束,則是表達式的人類可讀形式 |
在排斥約束的情況下,conkey 是簡單列引用的唯一有用約束元素。 對于其他情況下,conkey出現(xiàn)零 和必須查閱發(fā)現(xiàn)限制表達的相關索引。 (conkey作為pg_index.indkey 索引有相同的內(nèi)容)。
Note: 當引用對象改變后,不會更新consrc。例如,它不會跟蹤字段名修改。 而不是依賴這個字段,最好還是使用
pg_get_constraintdef()
來提取一個檢查約束的定義。
Note: pg_class.relchecks需要和在此表上為給定關系找到的檢查約束的數(shù)目一致。 并且,如果關系中有任何排斥約束記錄,pg_class.relhasexclusion必須是真。