Erro na referência de chave estrangeira/Primária (postgres)

2 respostas
P

Ola pessoal, estou tentando criar essas tabelas junto a outras.. mas o erro ocorre quando tento criar essas tabelas, pois a chave estrangeira também é primária.
Alguem poderia me ajudar?

ERRO: coluna "dominio_codigotipodominio" referenciada na restrição de chave estrangeira não existe
SQL state: 42703

CREATE TABLE Dominio (
  Codigo INTEGER   NOT NULL ,
  CodigoTipoDominio INTEGER   NOT NULL ,
  Nome VARCHAR      ,
PRIMARY KEY(Codigo, CodigoTipoDominio)  ,
  FOREIGN KEY(CodigoTipoDominio)
    REFERENCES TipoDominio(Codigo));


CREATE INDEX Dominio_FKIndexTipoDominio ON Dominio (CodigoTipoDominio);


CREATE INDEX IFK_Rel_TipoDominio_Dominio ON Dominio (CodigoTipoDominio);


CREATE TABLE Linha (
  Numero NUMERIC   NOT NULL ,
  CodigoStatusLinha INTEGER   NOT NULL ,
  NumeroConta NUMERIC   NOT NULL ,
  DataAtivacao DATE    ,
  DataAlteracao DATE    ,
  MatriculaAlteracao VARCHAR(20)      ,
PRIMARY KEY(Numero)    ,
  FOREIGN KEY(NumeroConta)
    REFERENCES Conta(Numero),
  FOREIGN KEY(CodigoStatusLinha, Dominio_CodigoTipoDominio)
    REFERENCES Dominio(Codigo, CodigoTipoDominio));


CREATE INDEX Linha_FKIndexConta ON Linha (NumeroConta);
CREATE INDEX Linha_FKIndexStatusLinha ON Linha (CodigoStatusLinha);

CREATE INDEX IFK_Rel_Conta_Linha ON Linha (NumeroConta);
CREATE INDEX IFK_Rel_StatusLinha ON Linha (CodigoStatusLinha, Dominio_CodigoTipoDominio);

2 Respostas

A
Pacato:
CREATE TABLE Linha (
  Numero NUMERIC   NOT NULL ,
  CodigoStatusLinha INTEGER   NOT NULL ,
  NumeroConta NUMERIC   NOT NULL ,
  DataAtivacao DATE    ,
  DataAlteracao DATE    ,
  MatriculaAlteracao VARCHAR(20)      ,
PRIMARY KEY(Numero)    ,
  FOREIGN KEY(NumeroConta)
    REFERENCES Conta(Numero),
  FOREIGN KEY(CodigoStatusLinha, Dominio_CodigoTipoDominio)
    REFERENCES Dominio(Codigo, CodigoTipoDominio));

Você está dizendo para ele criar uma chave estrangeira usando um campo Dominio_CodigoTipoDominio da tabela Linha.

O erro é que você não declarou esse campo na tabela Linha.

P

Valeu Abel… era isso mesmo…

Obrigado

off… Não sei colocar como respondida.

Criado 1 de outubro de 2012
Ultima resposta 1 de out. de 2012
Respostas 2
Participantes 2