Fórum PostgreSQL erro de chave estrangeira #485024
09/07/2014
0
WARNING ] CREATE TABLE pagamentos(
empenho cdEmpenho NOT NULL,
ano SMALLINT NOT NULL,
unidadeGestora cd_cpfCNPJ NOT NULL,
mes VARCHAR(03) NOT NULL CHECK (mes in('jan','fev','mar','abr','mai','jun','jul','ago','set','out','nov','dez')),
PRIMARY KEY (empenho, ano, unidadeGestora),
CONSTRAINT empenho_fk FOREIGN KEY(empenho) REFERENCES empenhos(empenho) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT unidadeGestora_fk FOREIGN KEY (unidadeGestora) REFERENCES unidadeGestora(cnpj) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE
) WITH (OIDS=FALSE)
NOTA: CREATE TABLE / PRIMARY KEY criará índice implícito "pagamentos_pkey" na tabela "pagamentos"
ERRO: não há restrição de unicidade que corresponde com as colunas informadas na tabela referenciada "empenhos"
/* TABELA EMPENHOS */
CREATE TABLE empenhos(
empenho cdEmpenho NOT NULL,
ano SMALLINT NOT NULL,
unidadeGestora cd_cpfCNPJ NOT NULL,
historico TEXT NOT NULL,
credor cd_cpfCNPJ NOT NULL,
PRIMARY KEY (empenho, ano, unidadeGestora),
CONSTRAINT unidadeGestora_fk FOREIGN KEY(unidadeGestora) REFERENCES unidadeGestora(cnpj) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE
) WITH (OIDS=FALSE);
/* TABELA PAGAMENTOS */
CREATE TABLE pagamentos(
empenho cdEmpenho NOT NULL,
ano SMALLINT NOT NULL,
unidadeGestora cd_cpfCNPJ NOT NULL,
PRIMARY KEY (empenho, ano, unidadeGestora),
CONSTRAINT empenho_fk FOREIGN KEY(empenho) REFERENCES empenhos(empenho) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT unidadeGestora_fk FOREIGN KEY (unidadeGestora) REFERENCES unidadeGestora(cnpj) MATCH SIMPLE ON UPDATE CASCADE ON DELETE CASCADE
) WITH (OIDS=FALSE);
Adenes Junior
Curtir tópico
+ 0Posts
09/07/2014
Ronaldo Lanhellas
Para funcionar você teria que criar uma chave estrangeira em "pagamentos" contendo os campos: empenho, ano, unidadeGestora
Gostei + 0
10/07/2014
Adenes Junior
CONSTRAINT fk_1 FOREIGN (empenho, ano, unidadeGestora) REFERENCES empenhos(empenho, ano, unidadeGestora)
Gostei + 0
10/07/2014
Ronaldo Lanhellas
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)