?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
pg_shdepend表記錄數(shù)據(jù)庫對象和共享對象(比如角色)之間的依賴性關(guān)系。 這些信息允許PostgreSQL保證在企圖刪除這些對象之前,沒有引用這些對象。
pg_depend表的作用類似,只是它是用于在一個(gè)單數(shù)據(jù)庫內(nèi)部的對象的依賴性關(guān)系的。
和其它大多數(shù)系統(tǒng)表不同,pg_shdepend是在集群里面所有的數(shù)據(jù)庫之間共享的: 每個(gè)數(shù)據(jù)庫集群只有一個(gè)pg_shdepend的副本,而不是每個(gè)數(shù)據(jù)庫一個(gè)。
Table 45-34. pg_shdepend Columns
名稱 | 類型 | 引用 | 描述 |
---|---|---|---|
dbid | oid | pg_database.oid | 依賴對象所在的數(shù)據(jù)庫的OID,如果是共享對象,則為零 |
classid | oid | pg_class.oid | The OID of the system catalog the dependent object is in依賴對象所在的系統(tǒng)表的OID |
objid | oid | 任何OID列 | 指定依賴對象的OID |
objsubid | int4 | ? | 表列,這是列號( objid和classid指 表本身)。對于所有其它對象類型,這個(gè)字段是零。 |
refclassid | oid | pg_class.oid | 引用對象所在的系統(tǒng)表的OID(必須是一個(gè)共享表) |
refobjid | oid | 任何OID列 | 指定引用對象的OID |
deptype | char | ? | 一段代碼,定義了這個(gè)依賴性關(guān)系的特定語義;參閱下文。 |
在任何情況下,一條pg_shdepend記錄就表示這個(gè)引用的對象不能在未刪除依賴對象的前提下刪除。 不過,deptype同時(shí)還標(biāo)出了幾種不同的子風(fēng)格:
引用的對象(必須是一個(gè)角色)是依賴對象的所有者。
引用的對象(必須是一個(gè)角色)在依賴對象的ACL(訪問控制列表, 也就是權(quán)限列表)里提到。SHARED_DEPENDENCY_ACL不會在對象的所有者頭上添加的, 因?yàn)樗姓邥幸粋€(gè)SHARED_DEPENDENCY_OWNER記錄。
沒有依賴對象;這類記錄標(biāo)識系統(tǒng)自身依賴于該引用對象, 因此這樣的對象絕對不能被刪除。這種類型的記錄只是由initdb創(chuàng)建。 這樣的依賴對象的字段包含零。
在將來可能會需要其它依賴性的風(fēng)格。請注意,目前的定義只是支持把角色當(dāng)作引用對象。