| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 43. 系統表 | Fast Forward | Next |
pg_depend 表記錄數據庫對象之間的依賴 關系。這個信息允許 DROP 命令找出哪些其他的對象必須 由 DROP CASCADE 刪除,或者是在 DROP RESTRICT 的情況下避免刪除。
Table 43-13. pg_depend 字段
| 名字 | 類型 | 引用 | 描述 |
|---|---|---|---|
| classid | oid | pg_class.oid | 有倚賴對象所在系統表的 OID |
| objid | oid | 任何 OID 屬性 | 指定的有依賴對象的 OID |
| objsubid | int4 | 對于表字段,這個是該屬性的字段數(objid和classid引用表本身)。 對于所有其他對象類型,目前這個字段是零。 | |
| refclassid | oid | pg_class.oid | 被引用對象所在的系統表的 oid |
| refobjid | oid | 任意 OID 屬性 | 指定的被引用對象的 OID |
| refobjsubid | int4 | 對于表字段,這個是該字段的字段號(objid和classid引用表本身)。 對于所有其他對象類型,目前這個字段是零。 | |
| deptype | char | 一個定義這個依賴關系特定語義的代碼。見文本。 |
在所有情況下,一個 pg_depend 記錄表示 被引用的對象不能在有依賴的對象被刪除前刪除。不過,這裡還有幾種 由 deptype 定義的情況:
獨立創建的對象之間的一般關系。 有倚賴的對象可以在不影響被引用對象的情況下刪除。被引用對象 只有在聲明了CASCADE的情況下刪除,這時有依賴的對象也被刪除。 例子:一個表字段對其數據類型有一般依賴關系。
有依賴對象可以和被引用對象分別刪除, 並且如果刪除了被引用對象則應該被自動刪除(不管是RESTRICT還是CASCADE模式)。 例子:一個表上面的命名約束是在該表上的自動依賴關系,因此 如果刪除了表,它也會被刪除。
有依賴的對象是作為被引用對象的一部分創建的, 實際上只是它的內部實現的一部分。DROP有依賴對象是不能直接允許的(我們 將告訴用戶發出一條刪除被引用對象的DROP)。一個對被引用對象的DROP 將傳播到有依賴對象,不管是否聲明了CASCADE。 例子:一個創建來強制外鍵約束的觸發器在該約束的pg_constraint 記錄上是標記為內部依賴的。
沒有有依賴對象;這種類型的記錄標志著系統本身依賴 于被引用對象,因此這個對象決不能被刪除。這種類型的記錄只有在initdb的 時候創建。有依賴對象的字段裡是零。
將來可能還會有其他依賴的風格。