W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
目錄pg_depend
記錄數(shù)據(jù)庫對象之間的依賴關(guān)系。這些信息允許DROP
命令查找必須被DROP CASCADE
刪除的其他對象,或者在DROP RESTRICT
情況下阻止刪除。
另請參閱pg_shdepend
,它對在一個數(shù)據(jù)庫集簇中共享的對象之間的依賴提供了相似的功能。
表 51.18. pg_depend
Columns
列類型 描述 |
---|
依賴對象所在的系統(tǒng)目錄OID |
指定依賴對象的OID |
對于一個表列,這里是列號( |
被引用對象所在的系統(tǒng)目錄的OID |
指定被引用對象的OID |
對于一個表列,這里是列號( |
定義此依賴關(guān)系語義的一個代碼,見文本 |
在所有情況下,一個pg_depend
項表明被引用對象不能在沒有刪除其依賴對象的情況下被刪除。但是,其中也有多種依賴類型,由deptype
標(biāo)識:
DEPENDENCY_NORMAL
(n
)在獨立創(chuàng)建的對象之間的一個普通關(guān)系。依賴對象可以在不影響被依賴對象的情況下被刪除。被引用對象只能通過指定CASCADE
被刪除,在這種情況下依賴對象也會被刪除。 例子:一個表列對于其數(shù)據(jù)類型有一個普通依賴。
DEPENDENCY_AUTO
(a
)依賴對象可以被獨立于被依賴對象刪除,且應(yīng)該在被引用對象被刪除時自動被刪除(不管在RESTRICT
或CASCADE
模式)。例子:一個表上的一個命名約束應(yīng)該被設(shè)置為自動依賴于表,這樣在表被刪除后它也會消失。
DEPENDENCY_INTERNAL
(i
)依賴對象作為被引用對象創(chuàng)建過程的一部分被創(chuàng)建,并且只是其內(nèi)部實現(xiàn)的一部分。不允許直接DROP
所依賴的對象(而是告訴用戶對引用對象發(fā)出DROP
操作)。無論是否指定了CASCADE
,DROP
被引用的對象都將導(dǎo)致自動刪除從屬對象。如果由于刪除了對某些其他對象的依賴關(guān)系而不得不刪除依賴對象,則其刪除將轉(zhuǎn)換為對所引用對象的刪除,因此依賴對象的
NORMAL
和AUTO
依賴關(guān)系的行為就像它們是所引用對象的依賴關(guān)系。示例:視圖的ON SELECT
規(guī)則使其在內(nèi)部依賴于視圖,以防止在視圖保留時將其刪除。規(guī)則的依賴關(guān)系(例如它引用的表)就好像他們是視圖的依賴關(guān)系。
DEPENDENCY_PARTITION_PRI
(P
)DEPENDENCY_PARTITION_SEC
(S
)依賴對象被作為被引用對象創(chuàng)建過程的一部分創(chuàng)建,并且確實是其內(nèi)部實現(xiàn)的一部分。但是,不像INTERNAL
,有多個這樣的引用對象。除非刪除了這些引用對象中的至少一個對象,否則不得刪除依賴對象;如果其中任何一個被刪除,則不管是否指定了CASCADE
,都應(yīng)刪除依賴對象。也不像INTERNAL
,依賴對象所依賴的某些其他對象的刪除不會導(dǎo)致任何分區(qū)引用的對象的自動刪除。因此,如果刪除沒有通過其他路徑級聯(lián)到這些對象中的至少一個,它會被拒絕。(大多數(shù)情況下,依賴對象與至少一個分區(qū)引用對象共享所有非分區(qū)的依賴關(guān)系,因此此限制不會導(dǎo)致阻止任何級聯(lián)的刪除。)主分區(qū)和輔助分區(qū)的依賴關(guān)系表現(xiàn)相同,除了主分區(qū)依賴關(guān)系傾向用于錯誤消息;因此,分區(qū)相關(guān)的對象應(yīng)該有一個主分區(qū)依賴關(guān)系和一個或多個輔助分區(qū)依賴關(guān)系。注意到分區(qū)依賴關(guān)系是任何對象所正常擁有的依賴關(guān)系的補充,而不是替代。這簡化了
ATTACH/DETACH PARTITION
操作:只要添加或刪除分區(qū)的依賴關(guān)系。例如:子分區(qū)索引與其所基于的分區(qū)表和父分區(qū)索引是分區(qū)相關(guān)的,因此只要其中一個刪除,則子分區(qū)索引就消失,否則,就不消失。父索引上的依賴關(guān)系是主要的,故如果用戶試圖刪除子分區(qū)索引,錯誤消息反而會建議刪除父索引(不是表)。
DEPENDENCY_EXTENSION
(e
)依賴對象是作為擴展的被引用對象的一個成員(參見pg_extension
)。依賴對象可以通過被引用對象上的DROP EXTENSION
來刪除。在功能上,這種依賴類型和一個
INTERNAL
依賴的作用相同,其存在只是為了清晰和簡化pg_dump。
DEPENDENCY_AUTO_EXTENSION
(x
)依賴對象不是作為被引用對象的擴展的成員(因此不應(yīng)該被pg_dump忽略),但是沒有該擴展它又無法工作,因此如果刪除了擴展,則該依賴對象應(yīng)自動刪除。該依賴對象也可以獨立刪除。功能上,該依賴關(guān)系類型與AUTO
依賴相同,但是為了清晰起見和簡化pg_dump,將其分開。
DEPENDENCY_PIN
(p
)沒有依賴對象,這種類型的項是一個信號,用于說明系統(tǒng)本身依賴于被引用對象,并且該對象永遠不能被刪除。這種類型的項只能被initdb
創(chuàng)建。而此種項的依賴對象的列都為0。
在未來可能會需要其他依賴類型。
要注意的是,兩個對象很有可能由不止一個pg_depend
條目來鏈接。例如子分區(qū)索引有一個依賴于其關(guān)聯(lián)的分區(qū)表的分區(qū)類型的依賴關(guān)系和依賴于該表索引的每一列的自動依賴關(guān)系。此類情形表示多重依賴關(guān)系語義的并集,依賴對象的刪除可以沒有CASCADE
,如果其任一依賴關(guān)系滿足自動刪除的條件。相反地,關(guān)于哪些對象必須一起刪除的所有依賴關(guān)系的限制必須滿足。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: