1
resposta

ERROR: there is no unique constraint matching given keys for referenced table "aluno"

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)
);

Esta dando erro mas nao sei o que esta errado

1 resposta

Rodrigo,

" - Não há correspondência única de restrição, dadas as teclas para a tabela referenciada "Aluno". "

Acredito que essa mensagem quer dizer:

1 - Já deve ter algum dado dentro da tabela que está "dobrando" a referência fazendo que NÃO seja possível criar as chaves estrangeiras (Foreign Key)

2 - Segue exemplos, mas acho que o que você fez está certo... no último caso ele colocou a segunda chave estrangeira depois de ter criado a tabela:

==========================================================

5.3.5. Foreign Keys

CREATE TABLE t1 (
  a integer PRIMARY KEY,
  b integer,
  c integer,
  FOREIGN KEY (b, c) REFERENCES other_table (c1, c2)
);

https://www.postgresql.org/docs/9.3/ddl-constraints.html

==========================================================

Várias Chaves Estrangeiras no PostgreSql

Bom dia. Sou novo no fórum. Gostaria de saber como colocar duas chaves estrangeiras no postgresql. Exemplo:

CREATE TABLE tbl_pedido
(
ped_codigo SERIAL,
ped_codCliente INT, /*Chave Estrangeira da tabela cliente*/
ped_codItem INT, /*Chave Estrangeira da tabela Itens*/
PRIMARY KEY (ped_codigo),
FOREIGN KEY (ped_codCliente) REFERENCES cliente (/*Campo a ser referenciado na tabela cliente. Exemplo: codCliente*/),
FOREIGN KEY (ped_codItem) REFERENCES itens (/*Campo a ser referenciado na tabela itens. Exemplo: codItem*/)
);

https://www.devmedia.com.br/forum/varias-chaves-estrangeiras-no-postgresql/412788

==========================================================

Criando uma Chave Estrangeira em PostgreSQL

Postado Em 17/11/2017 [data do post] por Fábio dos Reis [autor do post] em PostgreSQL [categoria do post]

CREATE TABLE tbl_Livro (
 ID_Livro int NOT NULL,
 Nome_Livro varchar(40),
 ID_Autor int NOT NULL,
 ID_Editora int NOT NULL,
 Data_Pub date,
 Genero varchar(25),
 Num_Paginas int,
 PRIMARY KEY (ID_Livro),
 FOREIGN KEY (ID_Autor) REFERENCES tbl_Autor (ID_Autor)
);
ALTER TABLE tbl_Livro
ADD CONSTRAINT fk_id_editora FOREIGN KEY (ID_Editora) REFERENCES tbl_Editora(ID_Editora);

http://www.bosontreinamentos.com.br/postgresql-banco-dados/criando-chave-estrangeira-em-postgresql/

==========================================================

[]'s,

Fabio I.