Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

PostgreSQL - Erro no comando CREATE TABLE c/ PRIMARY KEY , FOREIGN KEY e REFERENCES

Boa tarde,

Uso o DBeaver 23.1.4 e confurei um BD PostgreSQL como localhost.

acontece que ao executar o comando abaixo, o qual consta no material do curso "PostgreSQL", observei que deu a mensagem de erro abaixo:

CREATE TABLE aluno_curso (
    aluno_id INTEGER,
    curso_id INTEGER,
    PRIMARY KEY (aluno_id,curso_id),
    
    FOREIGN KEY (aluno_id)
   REFERENCES aluno (id),
    
    FOREIGN KEY (curso_id)
   REFERENCES curso (id)
);


 /*  
   FOREIGN KEY (CAMPO_NA_TABELA_ORIGEM)
   REFERENCES TABELA_DESTINO (CAMPO_TABELA_DESTINO)
           ON UPDATE OPÇÃO
        ON DELETE OPÇÃO
 */
 --  OPÇÃO (RESTRICT, CASCADE)

/* Mensagem de Erro: */

Erro SQL [1005] [HY000]: Can't create table `mysql`.`aluno_curso` (errno: 150 "Foreign key constraint is incorrectly formed")

Assim, executei o comando acima dessa forma:

CREATE TABLE aluno_curso (
   aluno_id INTEGER,
   curso_id INTEGER,
   PRIMARY KEY (aluno_id,curso_id)
);

Sendo o resultado final o seguinte:

aluno_id e curso_id (em duas colunas vazias).

Concluindo, por que não deu certo a execução do script SQL contido no material do referido curso?

Atenciosamente,

MARCELLO REUS KOCH Aluno

1 resposta
solução!

Olá Marcello, tudo bem?

Desculpe pela demora em obter um retorno.

O erro aponta uma restrição de integridade referencial não atendida. Isso significa que há uma inconsistência nas relações entre as tabelas.

Ao referenciar as chaves estrangeiras aluno_id e curso_id, é necessário as tabelas referenciadas (aluno e curso) já existam como também os campos em questão.

No andamento do curso o professor fez um DROP na tabela aluno e recriou. Certifique que tenha criado a tabela novamente.

Portanto, verifique se as tabelas aluno e curso já existam antes de executar o comando para criar a tabela aluno_curso. Isso garantirá que as referências sejam feitas corretamente.

Espero ter ajudado.

Caso surja alguma dúvida, fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!