1
resposta

[Erro Execução] - Chave estrangeira

Olá pessoal, estou com problemas para criar as chaves estrangeiras abaixo:

Chave estrangeira ( FK_TAB_EMPRESA_DEPARTAMENTO) da tabela empresa para a tabela departamento:

ALTER TABLE TAB_DEPARTAMENTO
ADD CONSTRAINT FK_TAB_EMPRESA_DEPARTAMENTO
FOREIGN KEY (COD_EMPRESA)
REFERENCES TAB_EMPRESA (COD_EMPRESA);

Ocorre o seguinte erro:

Erro a partir da linha : 3 no comando - ALTER TABLE TAB_DEPARTAMENTO ADD CONSTRAINT FK_TAB_EMPRESA_DEPARTAMENTO FOREIGN KEY (COD_EMPRESA) REFERENCES TAB_EMPRESA (COD_EMPRESA) Relatório de erros - ORA-00904: "COD_EMPRESA": identificador inválido

https://docs.oracle.com/error-help/db/ora-00904/00904. 00000 - "%s: invalid identifier" *Cause: The identifier or column name entered was invalid. *Action: Ensure the following

Campo COD_EMPRESA como PK na tabela TAB_EMPRESA

Insira aqui a descrição dessa imagem para ajudar na acessibilidade


Chave estrangeira FK_TAB_DEPARTAMENTO_FUNCIONARIO da tabela TAB_DEPARTAMENTO e TAB_FUNCIONARIO:

ALTER TABLE TAB_FUNCIONARIO
ADD CONSTRAINT FK_TAB_DEPARTAMENTO_FUNCIONARIO
FOREIGN KEY (COD_DEPARTAMENTO)
REFERENCES TAB_FUNCIONARIO (COD_DEPARTAMENTO);

Ocorre o seguinte erro:

Erro a partir da linha : 4 no comando - ALTER TABLE TAB_FUNCIONARIO ADD CONSTRAINT FK_TAB_DEPARTAMENTO_FUNCIONARIO FOREIGN KEY (COD_DEPARTAMENTO) REFERENCES TAB_FUNCIONARIO (COD_DEPARTAMENTO) Relatório de erros - ORA-02270: não há chave exclusiva ou primária compatível para esta lista de colunas

https://docs.oracle.com/error-help/db/ora-02270/02270. 00000 - "no matching unique or primary key for this column-list" *Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement gives a column-list for which there is no matching unique or primary key constraint in the referenced table. *Action: Find the correct column names using the ALL_CONS_COLUMNS catalog view

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Oii, Carlos! Como vai?

O primeiro erro, ORA-00904, pode acontecer quando a coluna referenciada não existe ou está incorreta, por erros de digitação, de sintaxe, letras maiúsculas ou minúsculas. Então, como sugestão, verifique se o nome da coluna está compatível com a escrita no código e, também, se ela existe dentro da tabela TB_DEPARTAMENTO. Para verificar você pode usar o seguinte comando:

DESC TAB_DEPARTAMENTO;

Traduzindo, o comando acima vai descrever a estrutura da tabela TAB_DEPARTAMENTO. E caso a coluna não exista é preciso criá-la.

Já o erro, ORA-02270, acontece quando você tenta criar uma chave estrangeira apontando para colunas de outra tabela que não têm uma chave primária ou uma restrição de unicidade. Como ação, verifique se as colunas na tabela referenciada tenham uma PK ou UNIQUE constraint. E teste a referenciar a tabela para TB_DEPARTAMENTO, por exemplo:

Aqui está um exemplo de como o comando deve ser:

ALTER TABLE TAB_FUNCIONARIO
ADD CONSTRAINT FK_TAB_DEPARTAMENTO_FUNCIONARIO
FOREIGN KEY (COD_DEPARTAMENTO)
REFERENCES TAB_DEPARTAMENTO (COD_DEPARTAMENTO);

Ao clicar no botão verde na atividade, escrito Ver opinião do Instrutor, você pode se inspirar para comparar as suas consultas também.

Espero que dê certo com as sugestões, conte sempre conosco aqui no fórum.

Até mais, Carlos!