42.13. pg_depend

O catálogo pg_depend registra os relacionamentos de dependência entre os objetos do banco de dados. Esta informação permite ao comando DROP descobrir quais outros objetos devem ser removidos pelo DROP CASCADE, ou impedir a remoção no caso de DROP RESTRICT.

Tabela 42-13. Colunas de pg_depend

Nome Tipo Referencia Descrição
classid oid pg_class.oid OID do catálogo do sistema onde está o objeto dependente
objid oid qualquer coluna OID OID do objeto dependente
objsubid int4   Para uma coluna de tabela, o número da coluna (o objid e o classid se referem à própria tabela). Para todos os outros tipos de objeto esta coluna é zero.
refclassid oid pg_class.oid OID do catálogo do sistema onde está o objeto referenciado
refobjid oid qualquer coluna OID OID do objeto referenciado
refobjsubid int4   Para uma coluna de tabela, o número da coluna (o refobjid e o refclassid se referem à própria tabela). Para todos os outros tipos de objeto esta coluna é zero.
deptype char   Código definindo as semânticas específicas deste relacionamento de dependência; veja o texto.

Em todos os casos, um entrada em pg_depend indica que o objeto referenciado não pode ser removido sem que o objeto dependente também seja removido. Entretanto, existem diversas subcategorias identificadas por deptype:

DEPENDENCY_NORMAL (n)

Relacionamento normal entre objetos criados separadamente. O objeto dependente pode ser removido sem afetar o objeto referenciado. O objeto referenciado só pode ser removido especificando CASCADE e, neste caso, o objeto dependente também é removido. Exemplo: uma coluna de tabela possui uma dependência normal de seu tipo de dado.

DEPENDENCY_AUTO (a)

O objeto dependente pode ser removido separadamente do objeto referenciado, e deve ser removido automaticamente (a despeito do modo RESTRICT ou CASCADE) se o objeto referenciado for removido. Exemplo: uma restrição com nome em uma tabela é autodependente da tabela e, portanto, desaparece quando a tabela é removida.

DEPENDENCY_INTERNAL (i)

O objeto dependente foi criado como parte da criação do objeto referenciado sendo, na verdade, apenas uma parte de sua implementação interna. O DROP do objeto dependente será desativado imediatamente (será informado ao usuário para executar o DROP do objeto referenciado, em vez deste objeto). O DROP do objeto referenciado é propagado para remover o objeto dependente, estando CASCADE especificado ou não. Exemplo: um gatilho criado para garantir a restrição de chave estrangeira é tornado internamente dependente da entrada em pg_constraint da restrição.

DEPENDENCY_PIN (p)

Não existe nenhum objeto dependente; este tipo de entrada é um sinal que o próprio sistema depende do objeto referenciado e, portanto, o objeto não pode ser removido nunca. As entradas deste tipo são criadas apenas pelo initdb. As colunas do objeto dependente contêm zero.

Outras modalidades de dependência poderão ser necessárias no futuro.

SourceForge.net Logo CSS válido!