48.18. pg_depend
РкаÑалоге pg_depend запиÑÑваÑÑÑÑ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑи Ð¼ÐµÐ¶Ð´Ñ Ð¾Ð±ÑекÑами Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐлагодаÑÑ ÑÑой инÑоÑмаÑии, ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ DROP могÑÑ Ð½Ð°Ð¹Ñи, какие обÑекÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑдалÑÑÑÑÑ Ð¿Ñи иÑполÑзовании DROP CASCADE, или когда нÑжно запÑеÑаÑÑ Ñдаление пÑи DROP RESTRICT.
Также ÑмоÑÑиÑе опиÑание каÑалога pg_shdepend, коÑоÑÑй игÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½ÑÑ ÑÐ¾Ð»Ñ Ð² оÑноÑении ÑовмеÑÑно иÑполÑзÑемÑÑ
обÑекÑов в клаÑÑеÑе баз даннÑÑ
.
ТаблиÑа 48.18. СÑолбÑÑ pg_depend
| ÐÐ¼Ñ | Тип | СÑÑлки | ÐпиÑание |
|---|---|---|---|
classid | oid | | OID ÑиÑÑемного каÑалога, в коÑоÑом Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð·Ð°Ð²Ð¸ÑимÑй обÑÐµÐºÑ |
objid | oid | лÑбой ÑÑÐ¾Ð»Ð±ÐµÑ OID | OID опÑеделÑнного завиÑимого обÑекÑа |
objsubid | int4 |  | ÐÐ»Ñ ÑÑолбÑа ÑаблиÑÑ ÑÑо Ð½Ð¾Ð¼ÐµÑ ÑÑолбÑа (objid и classid ÑказÑваÑÑ Ð½Ð° ÑÐ°Ð¼Ñ ÑаблиÑÑ). ÐÐ»Ñ Ð²ÑеÑ
дÑÑгиÑ
Ñипов обÑекÑов ÑÑо поле ÑодеÑÐ¶Ð¸Ñ Ð½Ð¾Ð»Ñ. |
refclassid | oid | | OID ÑиÑÑемного каÑалога, в коÑоÑом Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð²ÑÑеÑÑоÑÑий обÑÐµÐºÑ |
refobjid | oid | лÑбой ÑÑÐ¾Ð»Ð±ÐµÑ OID | OID опÑеделÑнного вÑÑеÑÑоÑÑего обÑекÑа |
refobjsubid | int4 |  | ÐÐ»Ñ ÑÑолбÑа ÑаблиÑÑ ÑÑо Ð½Ð¾Ð¼ÐµÑ ÑÑолбÑа (refobjid и refclassid ÑказÑваÑÑ Ð½Ð° ÑÐ°Ð¼Ñ ÑаблиÑÑ). ÐÐ»Ñ Ð²ÑеÑ
дÑÑгиÑ
Ñипов обÑекÑов ÑÑо поле ÑодеÑÐ¶Ð¸Ñ Ð½Ð¾Ð»Ñ. |
deptype | char |  | Ðод, опÑеделÑÑÑий конкÑеÑнÑÑ ÑеманÑÐ¸ÐºÑ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑи; Ñм. ÑекÑÑ |
Ðо вÑеÑ
ÑлÑÑаÑÑ
, запиÑÑ Ð² pg_depend показÑваеÑ, ÑÑо вÑÑеÑÑоÑÑий обÑÐµÐºÑ Ð½ÐµÐ»ÑÐ·Ñ ÑдалиÑÑ, не ÑдалÑÑ Ð¿Ð¾Ð´ÑинÑннÑй обÑекÑ. Ðднако еÑÑÑ Ð½ÐµÑколÑко подвидов завиÑимоÑÑи, задаваемÑÑ
в поле deptype:
DEPENDENCY_NORMAL(n)ÐбÑÑное оÑноÑение Ð¼ÐµÐ¶Ð´Ñ Ð¾ÑделÑно ÑоздаваемÑми обÑекÑами. ÐодÑинÑннÑй обÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑдалиÑÑ, не заÑÑÐ°Ð³Ð¸Ð²Ð°Ñ Ð²ÑÑеÑÑоÑÑий обÑекÑ. ÐÑÑеÑÑоÑÑий обÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑдалиÑÑ ÑолÑко Ñ Ñказанием
CASCADE, пÑи ÑÑом бÑÐ´ÐµÑ ÑдалÑн и подÑинÑннÑй обÑекÑ. ÐапÑимеÑ, ÑÑÐ¾Ð»Ð±ÐµÑ ÑаблиÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² обÑÑной завиÑимоÑÑи Ð¾Ñ Ñвоего Ñипа даннÑÑ .DEPENDENCY_AUTO(a)ÐодÑинÑннÑй обÑÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдалÑн оÑделÑно Ð¾Ñ Ð²ÑÑеÑÑоÑÑего и должен бÑÑÑ ÑдалÑн авÑомаÑиÑеÑки (вне завиÑимоÑÑи Ð¾Ñ Ñказаний
RESTRICTиCASCADE), еÑли ÑдалÑеÑÑÑ Ð²ÑÑеÑÑоÑÑий обÑекÑ. ÐапÑимеÑ, именованное огÑаниÑение Ð´Ð»Ñ ÑаблиÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² авÑомаÑиÑеÑкой завиÑимоÑÑи Ð¾Ñ ÑаблиÑÑ, Ñак ÑÑо оно иÑÑÐµÐ·Ð½ÐµÑ Ð¿Ñи Ñдалении ÑаблиÑÑ.DEPENDENCY_INTERNAL(i)ÐодÑинÑннÑй обÑÐµÐºÑ Ð±Ñл Ñоздан в пÑоÑеÑÑе ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²ÑÑеÑÑоÑÑего и на Ñамом деле ÑвлÑеÑÑÑ ÑолÑко ÑаÑÑÑÑ ÐµÐ³Ð¾ внÑÑÑенней ÑеализаÑии. ÐÐ»Ñ Ñакого обÑекÑа бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑеÑена команда
DROP(Ð¼Ñ Ð¿Ð¾Ð´Ñкажем полÑзоваÑелÑ, ÑÑо вмеÑÑо ÑÑого надо вÑполниÑÑDROPвÑÑеÑÑоÑÑий обÑекÑ). ÐейÑÑвиеDROPÐ´Ð»Ñ Ð²ÑÑеÑÑоÑÑего обÑекÑа бÑÐ´ÐµÑ ÑаÑпÑоÑÑÑанено и на ÑÑÐ¾Ñ Ð¿Ð¾Ð´ÑинÑннÑй обÑекÑ, вне завиÑимоÑÑи Ð¾Ñ Ð¿ÑиÑÑÑÑÑÐ²Ð¸Ñ ÑказаниÑCASCADE. ÐапÑимеÑ, ÑÑиггеÑ, ÑозданнÑй Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑнего клÑÑа, ÑÑановиÑÑÑ Ð²Ð½ÑÑÑенне завиÑимÑм Ð¾Ñ Ð·Ð°Ð¿Ð¸Ñи огÑаниÑÐµÐ½Ð¸Ñ Ð²pg_constraint.DEPENDENCY_EXTENSION(e)ÐодÑинÑннÑй обÑÐµÐºÑ Ð²Ñ Ð¾Ð´Ð¸Ñ Ð² ÑоÑÑав ÑаÑÑиÑениÑ, коÑоÑое ÑвлÑеÑÑÑ Ð²ÑÑеÑÑоÑÑим обÑекÑом (Ñм.
pg_extension). УдалиÑÑ Ð¿Ð¾Ð´ÑинÑннÑй обÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾, ÑолÑко вÑполнив командÑDROP EXTENSIONÐ´Ð»Ñ Ð²ÑÑеÑÑоÑÑего обÑекÑа. ФÑнкÑионалÑно ÑÑÐ¾Ñ Ñип завиÑимоÑÑи дейÑÑвÑÐµÑ Ñак же, как и внÑÑÑеннÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ, но он вÑделен Ð´Ð»Ñ Ð½Ð°Ð³Ð»ÑдноÑÑи и ÑпÑоÑÐµÐ½Ð¸Ñ pg_dump.DEPENDENCY_AUTO_EXTENSION(x)ÐодÑинÑннÑй обÑÐµÐºÑ Ð½Ðµ Ð²Ñ Ð¾Ð´Ð¸Ñ Ð² ÑоÑÑав ÑаÑÑиÑениÑ, коÑоÑое ÑвлÑеÑÑÑ Ð²ÑÑеÑÑоÑÑим обÑекÑом (и поÑÑÐ¾Ð¼Ñ Ð½Ðµ должен игноÑиÑоваÑÑÑÑ ÑÑилиÑой pg_dump), но не Ð¼Ð¾Ð¶ÐµÑ ÑÑнкÑиониÑоваÑÑ Ð±ÐµÐ· него, и поÑÑÐ¾Ð¼Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑдалÑÑÑÑÑ Ð¿Ñи Ñдалении ÑаÑÑиÑениÑ. ÐÑи ÑÑом подÑинÑннÑй обÑÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдалÑн и Ñам по Ñебе.
DEPENDENCY_PIN(p)ÐавиÑимÑй обÑÐµÐºÑ Ð¾ÑÑÑÑÑÑвÑеÑ; ÑÑÐ¾Ñ Ñип запиÑи показÑваеÑ, ÑÑо ÑиÑÑема Ñама завиÑÐ¸Ñ Ð¾Ñ Ð²ÑÑеÑÑоÑÑего обÑекÑа, Ñак ÑÑо ÑÑÐ¾Ñ Ð¾Ð±ÑÐµÐºÑ Ð½ÐµÐ»ÑÐ·Ñ ÑдалÑÑÑ Ð½Ð¸ пÑи ÐºÐ°ÐºÐ¸Ñ ÑÑловиÑÑ . ÐапиÑи ÑÑого Ñипа ÑоздаÑÑÑÑ ÑолÑко командой
initdb. ÐÐ¾Ð»Ñ Ð·Ð°Ð²Ð¸Ñимого обÑекÑа в Ñакой запиÑи ÑодеÑÐ¶Ð°Ñ Ð½Ñли.
РбÑдÑÑем могÑÑ Ð¿Ð¾ÑвиÑÑÑÑ Ð¸ дÑÑгие Ð¿Ð¾Ð´Ð²Ð¸Ð´Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑи.