51.18. pg_depend #
РкаÑалоге pg_depend запиÑÑваÑÑÑÑ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑи Ð¼ÐµÐ¶Ð´Ñ Ð¾Ð±ÑекÑами Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
. ÐлагодаÑÑ ÑÑой инÑоÑмаÑии, ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ DROP могÑÑ Ð½Ð°Ð¹Ñи, какие обÑекÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑдалÑÑÑÑÑ Ð¿Ñи иÑполÑзовании DROP CASCADE, или когда нÑжно запÑеÑаÑÑ Ñдаление пÑи DROP RESTRICT.
Также ÑмоÑÑиÑе опиÑание каÑалога pg_shdepend, коÑоÑÑй игÑÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½ÑÑ ÑÐ¾Ð»Ñ Ð² оÑноÑении ÑовмеÑÑно иÑполÑзÑемÑÑ
обÑекÑов в клаÑÑеÑе баз даннÑÑ
.
ТаблиÑа 51.18. СÑолбÑÑ pg_depend
Тип ÑÑолбÑа ÐпиÑание |
|---|
OID ÑиÑÑемного каÑалога, в коÑоÑом Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð·Ð°Ð²Ð¸ÑимÑй обÑÐµÐºÑ |
OID опÑеделÑнного завиÑимого обÑекÑа |
ÐÐ»Ñ ÑÑолбÑа ÑаблиÑÑ ÑÑо Ð½Ð¾Ð¼ÐµÑ ÑÑолбÑа ( |
OID ÑиÑÑемного каÑалога, в коÑоÑом Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð²ÑÑеÑÑоÑÑий обÑÐµÐºÑ |
OID опÑеделÑнного вÑÑеÑÑоÑÑего обÑекÑа |
ÐÐ»Ñ ÑÑолбÑа ÑаблиÑÑ ÑÑо Ð½Ð¾Ð¼ÐµÑ ÑÑолбÑа ( |
Ðод, опÑеделÑÑÑий конкÑеÑнÑÑ ÑеманÑÐ¸ÐºÑ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ оÑноÑÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑи; Ñм. ÑекÑÑ |
Ðо вÑеÑ
ÑлÑÑаÑÑ
, запиÑÑ Ð² pg_depend показÑваеÑ, ÑÑо вÑÑеÑÑоÑÑий обÑÐµÐºÑ Ð½ÐµÐ»ÑÐ·Ñ ÑдалиÑÑ, не ÑдалÑÑ Ð¿Ð¾Ð´ÑинÑннÑй обÑекÑ. Ðднако еÑÑÑ Ð½ÐµÑколÑко подвидов завиÑимоÑÑи, задаваемÑÑ
в поле deptype:
DEPENDENCY_NORMAL(n)ÐбÑÑное оÑноÑение Ð¼ÐµÐ¶Ð´Ñ Ð¾ÑделÑно ÑоздаваемÑми обÑекÑами. ÐодÑинÑннÑй обÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑдалиÑÑ, не заÑÑÐ°Ð³Ð¸Ð²Ð°Ñ Ð²ÑÑеÑÑоÑÑий обÑекÑ. ÐÑÑеÑÑоÑÑий обÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑдалиÑÑ ÑолÑко Ñ Ñказанием
CASCADE, пÑи ÑÑом бÑÐ´ÐµÑ ÑдалÑн и подÑинÑннÑй обÑекÑ. ÐапÑимеÑ, ÑÑÐ¾Ð»Ð±ÐµÑ ÑаблиÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² обÑÑной завиÑимоÑÑи Ð¾Ñ Ñвоего Ñипа даннÑÑ .DEPENDENCY_AUTO(a)ÐодÑинÑннÑй обÑÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдалÑн оÑделÑно Ð¾Ñ Ð²ÑÑеÑÑоÑÑего и должен бÑÑÑ ÑдалÑн авÑомаÑиÑеÑки (вне завиÑимоÑÑи Ð¾Ñ Ñказаний
RESTRICTиCASCADE), еÑли ÑдалÑеÑÑÑ Ð²ÑÑеÑÑоÑÑий обÑекÑ. ÐапÑимеÑ, именованное огÑаниÑение Ð´Ð»Ñ ÑаблиÑÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² авÑомаÑиÑеÑкой завиÑимоÑÑи Ð¾Ñ ÑаблиÑÑ, Ñак ÑÑо оно иÑÑÐµÐ·Ð½ÐµÑ Ð¿Ñи Ñдалении ÑаблиÑÑ.DEPENDENCY_INTERNAL(i)ÐодÑинÑннÑй обÑÐµÐºÑ Ð±Ñл Ñоздан в пÑоÑеÑÑе ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²ÑÑеÑÑоÑÑего и на Ñамом деле ÑвлÑеÑÑÑ ÑолÑко ÑаÑÑÑÑ ÐµÐ³Ð¾ внÑÑÑенней ÑеализаÑии. ÐÐ»Ñ Ñакого обÑекÑа бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑеÑена команда
DROP(Ð¼Ñ Ð¿Ð¾Ð´Ñкажем полÑзоваÑелÑ, ÑÑо вмеÑÑо ÑÑого надо вÑполниÑÑDROPÐ´Ð»Ñ Ð²ÑÑеÑÑоÑÑего обÑекÑа). ÐейÑÑвиеDROPÐ´Ð»Ñ Ð²ÑÑеÑÑоÑÑего обÑекÑа бÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки ÑаÑпÑоÑÑÑанено и на ÑÑÐ¾Ñ Ð¿Ð¾Ð´ÑинÑннÑй обÑекÑ, вне завиÑимоÑÑи Ð¾Ñ Ð¿ÑиÑÑÑÑÑÐ²Ð¸Ñ ÑказаниÑCASCADE. ÐÑли подÑинÑннÑй обÑÐµÐºÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ ÑдалÑн вÑледÑÑвие завиÑимоÑÑи Ð¾Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-Ñо дÑÑгого ÑдалÑемого обÑекÑа, Ñдаление подÑинÑнного пÑеобÑазÑеÑÑÑ Ð² Ñдаление вÑÑеÑÑоÑÑего, Ñо еÑÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑиNORMALиAUTOподÑинÑнного обÑекÑа во многом дейÑÑвÑÑÑ ÐºÐ°Ðº завиÑимоÑÑи вÑÑеÑÑоÑÑего обÑекÑа. ÐапÑимеÑ, пÑавилоON SELECTÐ´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð°Ð²ÑомаÑиÑеÑки ÑÑановиÑÑÑ Ð²Ð½ÑÑÑенне завиÑимÑм Ð¾Ñ ÑÑого пÑедÑÑавлениÑ, ÑÑо не позволÑÐµÑ ÑдалиÑÑ ÑÑо пÑавило, пока ÑÑÑеÑÑвÑÐµÑ Ð¿ÑедÑÑавление. ÐавиÑимоÑÑи ÑÑого пÑавила (напÑимеÑ, Ð¾Ñ ÑаблиÑ, коÑоÑÑе в нÑм ÑигÑÑиÑÑÑÑ) бÑдÑÑ Ð´ÐµÐ¹ÑÑвоваÑÑ Ñак же, как еÑли Ð±Ñ Ð¾Ð½Ð¸ бÑли завиÑимоÑÑÑми Ñамого пÑедÑÑавлениÑ.DEPENDENCY_PARTITION_PRI(P)DEPENDENCY_PARTITION_SEC(S)ÐодÑинÑннÑй обÑÐµÐºÑ (ÑекÑиÑ) бÑл Ñоздан в пÑоÑеÑÑе ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²ÑÑеÑÑоÑÑего (ÑекÑиониÑованного оÑноÑениÑ) и на Ñамом деле ÑвлÑеÑÑÑ ÑолÑко ÑаÑÑÑÑ ÐµÐ³Ð¾ внÑÑÑенней ÑеализаÑии; однако Ñ Ð½ÐµÐ³Ð¾ еÑÑÑ Ð½ÐµÑколÑко вÑÑеÑÑоÑÑÐ¸Ñ Ð¾Ð±ÑекÑов, ÑÑо оÑлиÑÐ°ÐµÑ ÑÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ Ð¾Ñ
INTERNAL. Такой подÑинÑннÑй обÑÐµÐºÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑдалÑÑÑÑÑ ÑолÑко Ñогда, когда ÑдалÑеÑÑÑ Ñ Ð¾ÑÑ Ð±Ñ Ð¾Ð´Ð¸Ð½ из ÑÑÐ¸Ñ Ð²ÑÑеÑÑоÑÑÐ¸Ñ Ð¾Ð±ÑекÑов; в ÑÑом ÑлÑÑае не должно имеÑÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð½Ð°Ð»Ð¸Ñие ÑказаниÑCASCADE. Также Ñ Ñакой завиÑимоÑÑÑÑ, в оÑлиÑие оÑINTERNAL, попÑÑка ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑого дÑÑгого обÑекÑа, Ð¾Ñ ÐºÐ¾ÑоÑого завиÑÐ¸Ñ Ð¿Ð¾Ð´ÑинÑннÑй, не пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº авÑомаÑиÑеÑÐºÐ¾Ð¼Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-либо из ÑвÑзаннÑÑ ÑекÑиониÑованнÑÑ Ð¾ÑноÑений. Таким обÑазом, еÑли Ñдаление не Ð´Ð¾Ñ Ð¾Ð´Ð¸Ñ Ð´Ð¾ минимÑм одного из вÑÑеÑÑоÑÑÐ¸Ñ Ð¾Ð±ÑекÑов по какомÑ-Ñо пÑÑи, оно не бÑÐ´ÐµÑ Ð¿Ñоизведено. (РболÑÑинÑÑве ÑлÑÑаев подÑинÑннÑй обÑÐµÐºÑ ÑазделÑÐµÑ Ð²Ñе Ñвои неÑекÑионнÑе завиÑимоÑÑи Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ñм одним ÑекÑионно-ÑвÑзаннÑм обÑекÑом, ÑÑÐ¾Ð±Ñ ÑÑо огÑаниÑение не блокиÑовало каÑкаднÑе ÑдалениÑ.) ÐеÑвиÑнÑе (PRI) и вÑоÑиÑнÑе (SEC) ÑекÑионнÑе завиÑимоÑÑи Ð¿Ð¾Ñ Ð¾Ð¶Ð¸, и оÑлиÑаÑÑÑÑ ÑолÑко Ñем, ÑÑо пеÑвиÑнÑе завиÑимоÑÑи пÑедпоÑиÑаÑÑÑÑ Ð¿Ñи ÑоÑмиÑовании ÑообÑений об оÑÐ¸Ð±ÐºÐ°Ñ ; поÑÑÐ¾Ð¼Ñ ÑекÑионно-подÑинÑннÑй обÑекÑ, как пÑавило, бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð½Ñ Ð¿ÐµÑвиÑнÑÑ ÑекÑионнÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ Ð¸ Ð¾Ð´Ð½Ñ Ð¸Ð»Ð¸ неÑколÑко вÑоÑиÑнÑÑ . ÐамеÑÑÑе, ÑÑо ÑекÑионнÑе завиÑимоÑÑи ÑоздаÑÑÑÑ Ð² дополнение, но не вмеÑÑо обÑÑнÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑей, коÑоÑÑе бÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¾Ð±ÑекÑ. ÐÑо ÑпÑоÑÐ°ÐµÑ Ð¾Ð¿ÐµÑаÑииATTACH/DETACH PARTITION: они бÑдÑÑ Ð¿ÑоÑÑо добавлÑÑÑ Ð¸Ð»Ð¸ ÑдалÑÑÑ ÑекÑионнÑе завиÑимоÑÑи. ÐапÑимеÑ, доÑеÑний ÑекÑиониÑованнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¾ÐºÐ°Ð·ÑваеÑÑÑ ÑекÑионно-завиÑимÑм и Ð¾Ñ ÑобÑÑвенной ÑекÑиониÑованной ÑаблиÑÑ, и Ð¾Ñ ÑодиÑелÑÑкого ÑекÑиониÑованного индекÑа, Ñак ÑÑо он бÑÐ´ÐµÑ ÑдалÑн пÑи Ñдалении одного из ÑÑÐ¸Ñ Ð¾Ð±ÑекÑов, но не в дÑÑÐ³Ð¸Ñ ÑлÑÑаÑÑ . ÐавиÑимоÑÑÑ Ð¾Ñ ÑодиÑелÑÑкого ÑекÑиониÑованного индекÑа ÑвлÑеÑÑÑ Ð¿ÐµÑвиÑной, поÑÑÐ¾Ð¼Ñ ÐµÑли полÑзоваÑÐµÐ»Ñ Ð¿ÑÑаеÑÑÑ ÑдалиÑÑ Ð´Ð¾ÑеÑний ÑекÑиониÑованнÑй индекÑ, в ÑообÑении об оÑибке бÑÐ´ÐµÑ Ð¿Ñедложено ÑдалиÑÑ ÑодиÑелÑÑкий Ð¸Ð½Ð´ÐµÐºÑ (а не ÑаблиÑÑ).DEPENDENCY_EXTENSION(e)ÐодÑинÑннÑй обÑÐµÐºÑ Ð²Ñ Ð¾Ð´Ð¸Ñ Ð² ÑоÑÑав ÑаÑÑиÑениÑ, коÑоÑое ÑвлÑеÑÑÑ Ð²ÑÑеÑÑоÑÑим обÑекÑом (Ñм.
pg_extension). УдалиÑÑ Ð¿Ð¾Ð´ÑинÑннÑй обÑÐµÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾, ÑолÑко вÑполнив командÑDROP EXTENSIONÐ´Ð»Ñ Ð²ÑÑеÑÑоÑÑего обÑекÑа. ФÑнкÑионалÑно ÑÑÐ¾Ñ Ñип завиÑимоÑÑи дейÑÑвÑÐµÑ Ñак же, как и внÑÑÑеннÑÑ (INTERNAL) завиÑимоÑÑÑ, но он вÑделен Ð´Ð»Ñ Ð½Ð°Ð³Ð»ÑдноÑÑи и ÑпÑоÑÐµÐ½Ð¸Ñ pg_dump.DEPENDENCY_AUTO_EXTENSION(x)ÐодÑинÑннÑй обÑÐµÐºÑ Ð½Ðµ Ð²Ñ Ð¾Ð´Ð¸Ñ Ð² ÑоÑÑав ÑаÑÑиÑениÑ, ÑвлÑÑÑегоÑÑ Ð²ÑÑеÑÑоÑÑим обÑекÑом (и поÑÑÐ¾Ð¼Ñ Ð¾Ð½ не должен игноÑиÑоваÑÑÑÑ Ð¿ÑогÑаммой pg_dump), но он не Ð¼Ð¾Ð¶ÐµÑ ÑÑнкÑиониÑоваÑÑ Ð±ÐµÐ· ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð¸ должен ÑдалÑÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки пÑи Ñдалении ÑаÑÑиÑениÑ. Такой обÑÐµÐºÑ Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдалÑн Ñам по Ñебе. ФÑнкÑионалÑно ÑÑа завиÑимоÑÑÑ ÑабоÑÐ°ÐµÑ ÐºÐ°Ðº завиÑимоÑÑÑ
AUTO, но она вÑделена Ð´Ð»Ñ Ð½Ð°Ð³Ð»ÑдноÑÑи и ÑпÑоÑÐµÐ½Ð¸Ñ pg_dump.
РбÑдÑÑем могÑÑ Ð¿Ð¾ÑвиÑÑÑÑ Ð¸ дÑÑгие Ð¿Ð¾Ð´Ð²Ð¸Ð´Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑи.
ÐамеÑÑÑе, ÑÑо два обÑекÑа вполне могÑÑ Ð±ÑÑÑ ÑвÑÐ·Ð°Ð½Ñ Ð¼ÐµÐ¶Ð´Ñ Ñобой более Ñем одной запиÑÑÑ Ð² pg_depend. ÐапÑимеÑ, доÑеÑний ÑекÑиониÑованнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð±ÑÐ´ÐµÑ Ð¸Ð¼ÐµÑÑ Ð¸ завиÑимоÑÑÑ ÑекÑионного Ñипа Ð¾Ñ ÑвÑзанной ÑекÑиониÑованной ÑаблиÑÑ, и авÑомаÑиÑеÑкÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ Ð¾Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑÑолбÑа ÑаблиÑÑ, вÑ
одÑÑего в индекÑ. РподобнÑÑ
ÑиÑÑаÑиÑÑ
Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑÑо ÑовмеÑение завиÑимоÑÑей, неÑÑÑиÑ
ÑазнÑÑ
ÑмÑÑл. РеÑли какаÑ-либо из завиÑимоÑÑей ÑдовлеÑвоÑÑÐµÑ ÑÑловиÑм Ð´Ð»Ñ Ð°Ð²ÑомаÑиÑеÑкого ÑдалениÑ, подÑинÑннÑй обÑÐµÐºÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑдалÑн без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ CASCADE. ÐÑи ÑÑом, конеÑно, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑдовлеÑвоÑÐµÐ½Ñ Ð²Ñе огÑаниÑÐµÐ½Ð¸Ñ Ð·Ð°Ð²Ð¸ÑимоÑÑей, опÑеделÑÑÑиÑ
подлежаÑие ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑÑ.
ÐолÑÑинÑÑво обÑекÑов, ÑозданнÑÑ
во вÑÐµÐ¼Ñ ÑабоÑÑ initdb, ÑÑиÑаÑÑÑÑ Â«Ð·Ð°ÐºÑеплÑннÑми», ÑÑо ознаÑаеÑ, ÑÑо Ñама ÑиÑÑема завиÑÐ¸Ñ Ð¾Ñ Ð½Ð¸Ñ
. ÐоÑÑÐ¾Ð¼Ñ Ð¸Ñ
нелÑÐ·Ñ ÑдалÑÑÑ Ð½Ð¸ пÑи какиÑ
ÑÑловиÑÑ
. ÐÑоме Ñого, знаÑ, ÑÑо закÑеплÑннÑе обÑекÑÑ Ð½Ðµ бÑдÑÑ ÑдаленÑ, меÑ
анизм завиÑимоÑÑей не ÑоздаÑÑ Ð² pg_depend запиÑи, показÑваÑÑие завиÑимоÑÑи Ð¾Ñ ÑÑиÑ
обÑекÑов. Так, напÑимеÑ, ÑÑÐ¾Ð»Ð±ÐµÑ ÑаблиÑÑ Ñипа numeric ÑÑловно Ð¸Ð¼ÐµÐµÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ NORMAL Ð¾Ñ Ñипа даннÑÑ
numeric, но на Ñамом деле ÑÐ°ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð½Ðµ поÑвлÑеÑÑÑ Ð² pg_depend.