Criar Chave estrangeira numa tabela com chave primaria composta.
Oi galera, baseado nas tabelas abaixo tenho na segunda tabela (vigencia), 2 chaves primárias onde uma deve referenciar tabela unidadeGestora pelo campo uniaddeGestora da tabela vigencia com ao campo cnpj da tabela unidadeGestora. O problema é como faço na tabela vigencia para ter um FOREIGN KEY(unidadeGestora) REFERENCES unidadeGestora(cnpj) uma vez que na tabela vigencia possui chave primária multipla?
CREATE TABLE unidadeGestora(
cnpj cd_cpfCNPJ NOT NULL PRIMARY KEY,
empresa VARCHAR(80) NOT NULL,
uf VARCHAR(02) NOT NULL,
) WITH (OIDS=FALSE);
/* TABELA ANO DE VIGÊNCIA */
CREATE TABLE vigencia(
ano SMALLINT NOT NULL CHECK (ano > 2000),
unidadeGestora cd_cpfCNPJ NOT NULL,
usuario VARCHAR(50) NOT NULL,
PRIMARY KEY (ano, unidadeGestora),
CONSTRAINT usuario_fk FOREIGN KEY (usuario) REFERENCES usuarios(email)
) WITH (OIDS=FALSE);
CREATE TABLE unidadeGestora(
cnpj cd_cpfCNPJ NOT NULL PRIMARY KEY,
empresa VARCHAR(80) NOT NULL,
uf VARCHAR(02) NOT NULL,
) WITH (OIDS=FALSE);
/* TABELA ANO DE VIGÊNCIA */
CREATE TABLE vigencia(
ano SMALLINT NOT NULL CHECK (ano > 2000),
unidadeGestora cd_cpfCNPJ NOT NULL,
usuario VARCHAR(50) NOT NULL,
PRIMARY KEY (ano, unidadeGestora),
CONSTRAINT usuario_fk FOREIGN KEY (usuario) REFERENCES usuarios(email)
) WITH (OIDS=FALSE);
Adenes Junior
Curtidas 0
Melhor post
Ronaldo Lanhellas
08/07/2014
Basta adicionar a seguinte linha no seu DDL acima:
Ele vai criar uma chave referenciando unidadeGestora com o campo cnpj, testei aqui e funcionou.
CONSTRAINT fk1 FOREIGN KEY (unidadeGestora) REFERENCES unidadeGestora(cnpj)
Ele vai criar uma chave referenciando unidadeGestora com o campo cnpj, testei aqui e funcionou.
GOSTEI 2