Constraint

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
pmv1980
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 97
Registrado em: Qua, 07 Jan 2009 12:39 pm
Localização: Recife

Tenho a seguinte estrutura

Selecionar tudo

tabelas                       colunas

despesas                      cd_despesa (pk)
tipo_despesas                 cd_tp_despesa(pk)
despesa_tipo_despesa          cd_despesa (fk), cd_despesa (fk)
Se vou na tabela de despesas e tento excluir uma despesa, dá erro por conta da cd_despesa (fk), mas se vou na tabela tipo_despesa, estou conseguindo excluir um tipo de despesa, mesmo estando ela relacionada.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Bom dia.

Pelo visto, a única CONSTRAINT que existe na Tipo_Despesa é a PK e, não existe nenhuma FOREIGN KEY apontando essa PK para outra tabela, por isso conseguiste a exclusão.

Qualquer coisa, manda pra gente.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Sim, pois a tabela TIPO_DESPESA não tem filhos. Caso tivesse uma FK na DESPESA_TIPO_DESPESA que referenciasse a TIPO_DESPESA e se tivesse em uso, daí sim daria erro ao tentar excluir um TIPO_DESPESA que já estivesse em uso.
pmv1980
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 97
Registrado em: Qua, 07 Jan 2009 12:39 pm
Localização: Recife

Mas tem a fk do cd_tp_despesa, na tabela despesa_tp_despesa, que refere-se a tabela tipo_despesas e está em uso.
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

A tabela tipo_despesa está sendo usada na FK mas a linha, especificamente, que você tentou excluir não estava sendo referenciada.
Teste excluir uma linha em tipo_despesa para a qual existe uma outra linha em despesa_tipo_despesa apontando.
pmv1980
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 97
Registrado em: Qua, 07 Jan 2009 12:39 pm
Localização: Recife

O tipo de despesa tinha filho sim e mesmo assim excluiu, a estrutura está assim:

Selecionar tudo

Alter Table Despesas
Add Constraint Cd_Despesa_PK Primary Key(Cd_Despesa)

Alter Table Tipo_Despesas
Add Constraint Cd_Tp_Despesa_PK Primary Key (Cd_Tp_Despesa)

Alter Table Despesas_Tipo_Despesas
Add Constraint Cd_Despesas_FK Foreign Key(Cd_Despesa)
References Despesas

Alter Table Despesas_Tipo_Despesas
Add Constraint Cd_Tp_Despesas_FK Foreign Key (Cd_Tp_Despesa)
References Tipo_Despesas
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes