我遇到了一些不好的FK麻烦我......
我有这个GIANT表:
CREATE TABLE conhecimento
(
grupo integer NOT NULL,
empresa integer NOT NULL,
filial integer NOT NULL,
unidade integer NOT NULL,
diferenciadornumero integer NOT NULL,
serie integer NOT NULL,
numero integer NOT NULL,
dtemissao timestamp without time zone,
dtinc date,
dtalt date,
dtprevisaoentrega timestamp without time zone,
dtcancelamento date,
dtexecucao date,
codigousuario integer,
semaforo integer DEFAULT 0,
veiculo character varying(7),
cnpjcpfcodigoveiculo character varying(20),
motorista character varying(20),
naturezaoperacao integer,
pagadorfrete integer DEFAULT 1,
remetente character varying(20),
destinatario character varying(20),
consignatario character varying(20),
redespacho character varying(20),
paiscoleta character varying(3),
ufcoleta character varying(3),
cidadecoleta character varying(65),
paisentrega character varying(3),
ufentrega character varying(3),
cidadeentrega character varying(65),
valortotalprestacao numeric(15,2) DEFAULT 0,
faturado integer DEFAULT 2,
filialdestino integer,
unidadedestino integer,
numerocontroleformulario integer,
carreta1 character varying(7),
carreta2 character varying(7),
carreta3 character varying(7),
utilizartabela integer DEFAULT 99,
tipoconfiguracaotabela integer DEFAULT 1,
complementotipotabela character varying(20),
modelotabela integer DEFAULT 99,
filialtabela integer,
unidadetabela integer,
codigotabela integer,
versaotabela integer,
sequenciatabela integer,
paisorigemtabela character varying(3),
uforigemtabela character varying(3),
cidadeorigemtabela character varying(65),
regiaoorigemtabela character varying(3),
paisdestinotabela character varying(3),
ufdestinotabela character varying(3),
cidadedestinotabela character varying(65),
regiaodestinotabela character varying(3),
condicaoespecialtabela character varying(3),
tarifatabela integer,
calcularpesoquantidade integer DEFAULT 99,
quantidade numeric(12,2) DEFAULT 0,
pesobruto numeric(11,3) DEFAULT 0,
pesoimpureza numeric(11,3) DEFAULT 0,
peso numeric(11,3) DEFAULT 0,
pesocubado numeric(11,3) DEFAULT 0,
valortotalmercadoria numeric(15,2) DEFAULT 0,
valortaxadespacho numeric(15,2) DEFAULT 0,
valortaxaseccat numeric(15,2) DEFAULT 0,
valortaxaademe numeric(15,2) DEFAULT 0,
valortaxagris numeric(15,2) DEFAULT 0,
valortaxaseguro numeric(15,2) DEFAULT 0,
valortaxaentrega numeric(15,2) DEFAULT 0,
valortaxadescarga numeric(15,2) DEFAULT 0,
valortaxareembolso numeric(15,2) DEFAULT 0,
valortaxapedagio numeric(15,2) DEFAULT 0,
valortotaltaxas numeric(15,2) DEFAULT 0,
valorfretepeso numeric(15,2) DEFAULT 0,
tarifapercvalorfrete numeric(15,6) DEFAULT 0,
valorfretemercadoria numeric(15,2) DEFAULT 0,
valordesconto numeric(15,2) DEFAULT 0,
valorliquido numeric(15,2) DEFAULT 0,
segurorcfdc integer,
percsegurorcfdc numeric(8,4) DEFAULT 0,
valorsegurorcfdc numeric(15,2) DEFAULT 0,
percsegurorctrc numeric(8,4) DEFAULT 0,
valorsegurorctrc numeric(15,2) DEFAULT 0,
valortotalseguro numeric(15,2) DEFAULT 0,
valormercadoriasegurocomplementar numeric(15,2) DEFAULT 0,
valorbasecalculoicms numeric(15,2) DEFAULT 0,
percaliquotaicms numeric(6,2) DEFAULT 0,
valoricms numeric(15,2) DEFAULT 0,
valoricmssubstituicaotributaria numeric(15,2) DEFAULT 0,
valoricmsisento numeric(15,2) DEFAULT 0,
valoricmsoutros numeric(15,2) DEFAULT 0,
complementar integer DEFAULT 2,
valorbasecalculoiss numeric(15,2) DEFAULT 0,
percaliquotaiss numeric(6,2) DEFAULT 0,
valoriss numeric(15,2) DEFAULT 0,
cargaexpressa integer DEFAULT 2,
prazopadraoentrega integer,
adicionalentrega integer DEFAULT 2,
reentrega integer DEFAULT 2,
filialctrcorigem integer,
unidadectrcorigem integer,
diferenciadornumeroctrcorigem integer,
seriectrcorigem integer,
numeroctrcorigem integer,
observacaopadrao character varying,
observacaoicms character varying,
observacaodigitada character varying,
condicaopagamento integer,
alterarparcelasmanualmente integer DEFAULT 2,
lotacao integer DEFAULT 2,
tipodocumento integer DEFAULT 6,
valoradicionalcargaexpressa numeric(15,2) DEFAULT 0,
valorpedagiodestacado numeric(15,2) DEFAULT 0,
quantidadeentregas numeric(3,0) DEFAULT 0,
valoradicionaladvalorem numeric(15,2) DEFAULT 0,
tipoicms integer,
classificacaoicms integer,
perctaxaadministracao numeric(6,2),
valortaxaadministracao numeric(15,2),
pedagiocompoebasecalculo integer,
digitaritensnotafiscal integer NOT NULL DEFAULT 2,
alterarcontabilizacaomanualmente integer NOT NULL DEFAULT 2,
usuariomarkmanifesto integer,
freteredespacho integer NOT NULL DEFAULT 1,
utilizarpesobruto integer NOT NULL DEFAULT 2,
quantidadeetiquetas integer,
faturaremissao integer NOT NULL DEFAULT 3,
bancocedente integer,
agenciacedente character varying(7),
contacedente character varying(15),
codigocedente character varying(17),
modalidadecobranca character varying(3),
filialcarteira integer,
unidadecarteira integer,
dtagendamentoentrega timestamp without time zone,
icmsfrete integer NOT NULL DEFAULT 1, -- 1 - Incluso...
quantidadereferenciacalculo numeric(12,2) DEFAULT 0,
parametroorigemtabela integer DEFAULT 1,
filialorigemtabela integer,
unidadeorigemtabela integer,
parametrodestinotabela integer DEFAULT 1,
filialdestinotabela integer,
unidadedestinotabela integer,
utilizartabelaafretamento integer NOT NULL DEFAULT 2,
valorfretefreteiro numeric(15,6) DEFAULT 0,
valorpedagiofreteiro numeric(15,2) DEFAULT 0,
dtexportacaocliente date,
m3 numeric(8,5) DEFAULT 0,
valorcontabil numeric(15,2) DEFAULT 0,
tipoprazoentrega integer NOT NULL DEFAULT 1,
devolucao integer NOT NULL DEFAULT 2,
tipofrete integer,
numeropasta character varying(20),
numerodtadi character varying(20),
tipocarga integer,
estabelecimentoorigem integer,
estabelecimentodestino integer,
percbasecalculoicms numeric(5,2) DEFAULT 0,
embutiricmspedagio integer NOT NULL DEFAULT 2,
cnpjcpfcodigopagadorfrete character varying(20),
alteradoimpostosmanualmente integer NOT NULL DEFAULT 2,
naturezamercadoria character varying(40),
especiemercadoria character varying(40),
tipofreteinformadomanualmente integer NOT NULL DEFAULT 2, -- 1 - Sim, 2 - Não
cortesia integer NOT NULL DEFAULT 2,
alteradosegurosmanualmente integer NOT NULL DEFAULT 2,
usuarioemissor integer,
grupoconhecimentoaereo integer,
empresaconhecimentoaereo integer,
filialconhecimentoaereo integer,
unidadeconhecimentoaereo integer,
cnpjcpfcodigoemissorconhecimentoaereo character varying(20),
diferenciadornumeroconhecimentoaereo integer,
serieconhecimentoaereo integer,
numeroconhecimentoaereo integer,
percsegurorctac numeric(8,4) DEFAULT 0,
valorsegurorctac numeric(15,2) DEFAULT 0,
dtentrega timestamp without time zone,
informarnaturezamercadoria integer NOT NULL DEFAULT 1,
informarespeciemercadoria integer NOT NULL DEFAULT 1,
quantidadecalculofrete numeric(12,2) DEFAULT 0,
utilizarquantidadecalculofrete integer NOT NULL DEFAULT 2,
remetenteinscricaoestadualdiferenciada integer NOT NULL DEFAULT 2,
destinatarioinscricaoestadualdiferenciada integer NOT NULL DEFAULT 2,
consignatarioinscricaoestadualdiferenciada integer NOT NULL DEFAULT 2,
redespachoinscricaoestadualdiferenciada integer NOT NULL DEFAULT 2,
liberarimpressaodocumentodigitacaonotafiscal integer NOT NULL DEFAULT 1,
informadoredespacho integer NOT NULL DEFAULT 1, -- 1 - Manualmente, 2 - Sugerido (agente)
tipoinclusao integer NOT NULL DEFAULT 1, -- , 1 - Manual, 2 - Automatica EDI, 3 - Manual ACT, 4 - Manual Programacao carregamento, 5 - Automatica EDI - Frete informado, 6 - Automatica - vinculado a CTRC
complementarimposto integer NOT NULL DEFAULT 2, -- 1 - Sim...
observacaolivrofiscal character varying(200),
tipocargainformadomanualmente integer NOT NULL DEFAULT 2, -- 1 - Sim...
tiponumerodtadi integer NOT NULL DEFAULT 1, -- 1 - DTA...
despachante character varying(100),
estufagem integer NOT NULL DEFAULT 2, -- 1 - Sim, 2 - Não
tamanhocontainer integer NOT NULL DEFAULT 3, -- 1 - 20...
filialconfiguracaoespecificaimpressao integer,
unidadeconfiguracaoespecificaimpressao integer,
percbasecalculoicmssubstituicaotributaria numeric(6,2) DEFAULT 0,
valorbasecalculoicmssubstituicaotributaria numeric(15,2) DEFAULT 0,
percaliquotaicmssubstituicaotributaria numeric(6,2) DEFAULT 0,
valorbasecalculoicmscreditopresumido numeric(15,2) DEFAULT 0,
percaliquotaicmscreditopresumido numeric(6,2) DEFAULT 0,
valoricmscreditopresumido numeric(15,2) DEFAULT 0,
valoricmssubstituicaotributariaobservacaoicms numeric(15,2) DEFAULT 0,
paisorigemcalculoimposto character varying(3),
uforigemcalculoimposto character varying(3),
cidadeorigemcalculoimposto character varying(65),
alteradoorigemcalculoimpostomanualmente integer NOT NULL DEFAULT 2, -- 1 - Sim...
paisdestinocalculoimposto character varying(3),
ufdestinocalculoimposto character varying(3),
cidadedestinocalculoimposto character varying(65),
alteradodestinocalculoimpostomanualmente integer NOT NULL DEFAULT 2, -- 1 - Sim...
pagadorfreteemissao integer NOT NULL DEFAULT 1, -- 1 - Remetente...
refaturado integer NOT NULL DEFAULT 2, -- 1 - Sim...
alterarcomissoesmanualmente integer NOT NULL DEFAULT 2, -- 1 - Sim...
mercadoriadestinadaexportacao integer NOT NULL DEFAULT 2, -- 1 - Sim...
mercadoriadestinadaexportacaoinformadomanualmente integer NOT NULL DEFAULT 2, -- 1 - Sim...
usuariomarkrateio integer,
rota character varying(3),
pesoliquido numeric(11,3) DEFAULT 0,
utilizarpesoliquido integer NOT NULL DEFAULT 2, -- 1 - Sim...
ajustarvalorfrete integer NOT NULL DEFAULT 2, -- 1 - Sim...
valorbasecalculopisretido numeric(15,2) DEFAULT 0,
percaliquotapisretido numeric(5,2) DEFAULT 0,
valorpisretido numeric(15,2) DEFAULT 0,
valorbasecalculocofinsretido numeric(15,2) DEFAULT 0,
percaliquotacofinsretido numeric(5,2) DEFAULT 0,
valorcofinsretido numeric(15,2) DEFAULT 0,
valorbasecalculocsllretido numeric(15,2) DEFAULT 0,
percaliquotacsllretido numeric(5,2) DEFAULT 0,
valorcsllretido numeric(15,2) DEFAULT 0,
valorbasecalculoirretido numeric(15,2) DEFAULT 0,
percaliquotairretido numeric(5,2) DEFAULT 0,
valorirretido numeric(15,2) DEFAULT 0,
valortotalmercadoriacalculofrete numeric(15,2) DEFAULT 0,
utilizarvalormercadoriacalculofrete integer NOT NULL DEFAULT 2, -- 1 - Sim...
comboio integer NOT NULL DEFAULT 2, -- 1 - Sim...
containervazio integer NOT NULL DEFAULT 2, -- 1 - Sim...
tipocontainer integer,
containers character varying(100),
quantidadepallets integer DEFAULT 0,
usuariomarkprotocolo integer,
emissaoeletronica integer NOT NULL DEFAULT 2, -- 1 - Sim...
ufemissorcte character varying(2),
numerolotecte bigint,
ambienteemissaocte integer, -- 1 - Producao...
contingenciacte integer DEFAULT 2, -- 1 - Sim, 2 - Não
situacaocte integer NOT NULL DEFAULT 5, -- 1 - aguardandoprocessamento...
chaveacessocte character varying(44),
numeroprotocolocte bigint,
dacteimpressa integer, -- 1 - Sim...
numeroprotocolocancelamentocte bigint,
empresalocadoveiculo integer,
filiallocadoveiculo integer,
unidadelocadoveiculo integer,
tipo integer NOT NULL DEFAULT 1, -- 1 - Remetente, 2 - Destinatario, 3 - Consignatario, 4 - Redespacho, 5 - Endereço de Entrega, 6 - Expedidor, 7 - recebedor
tiposervico integer NOT NULL DEFAULT 1, -- 1 - Normal...
clienteretiradestino integer NOT NULL DEFAULT 2, -- 1 - Sim...
icmsdiferido integer NOT NULL DEFAULT 2, -- 1 - Sim...
segurofrete integer NOT NULL DEFAULT 1, -- 1 - Incluso...
percsegurofrete numeric(8,4) DEFAULT 0,
atividadeveiculo character varying(5),
lotacaoemissaoeletronica integer NOT NULL DEFAULT 2, -- 1 - Sim...
codigoprojetoapisul integer,
limitecreditobloqueado integer NOT NULL DEFAULT 2, -- 1 - Sim...
valorfreteformulaa numeric(15,2) DEFAULT 0,
valorfreteformulab numeric(15,2) DEFAULT 0,
valorfreteformulac numeric(15,2) DEFAULT 0,
valorfreteformulad numeric(15,2) DEFAULT 0,
embutiricmsvalorfreteformulaa integer NOT NULL DEFAULT 1, -- 1 - Sim...
embutiricmsvalorfreteformulab integer NOT NULL DEFAULT 1, -- 1 - Sim...
embutiricmsvalorfreteformulac integer NOT NULL DEFAULT 1, -- 1 - Sim...
embutiricmsvalorfreteformulad integer NOT NULL DEFAULT 1, -- 1 - Sim...
utilizarnsu integer NOT NULL DEFAULT 2, -- 1 - Sim...
expedidor character varying(20),
recebedor character varying(20),
cnpjcpfcodigotomadorservico character varying(20),
tomadorservico integer DEFAULT 1, -- 1 - Remetente...
expedidorinscricaoestadualdiferenciada integer DEFAULT 2, -- 1 - Sim...
recebedorinscricaoestadualdiferenciada integer DEFAULT 2, -- 1 - Sim...
bairroorigemtabela character varying(60),
bairrodestinotabela character varying(60),
bairrocoleta character varying(60),
bairroentrega character varying(60),
valorfreteorigem numeric(15,2) DEFAULT 0,
valortotalmercadoriaefeitoseguro numeric(15,2) DEFAULT 0,
paisdesembaracoaduaneiro character varying(3),
ufdesembaracoaduaneiro character varying(3),
cidadedesembaracoaduaneiro character varying(65),
dtiniciodescarga timestamp without time zone,
cnpjcpfcodigonotafiscalentradaanulacao character varying(20),
dtemissaonotafiscalentradaanulacao date,
serienotafiscalentradaanulacao integer,
numeronotafiscalentradaanulacao integer,
temperaturaminima numeric(3,1),
temperaturamaxima numeric(3,1),
valorbasepis numeric(15,2) DEFAULT 0,
percaliquotapis numeric(5,2) DEFAULT 0,
valorpis numeric(15,2) DEFAULT 0,
valorbasecofins numeric(15,2) DEFAULT 0,
percaliquotacofins numeric(5,2) DEFAULT 0,
valorcofins numeric(15,2) DEFAULT 0,
latitudecoleta numeric(17,14) DEFAULT 0,
longitudecoleta numeric(17,14) DEFAULT 0,
latitudeentrega numeric(17,14) DEFAULT 0,
longitudeentrega numeric(17,14) DEFAULT 0,
quantidadeetiquetasidentificacaovolume integer NOT NULL DEFAULT 0,
usuariomarkroteirocarregamento integer,
situacaotributariapis character varying(3) DEFAULT '001'::character varying, -- Utilizar o cadastro de csts do pis
situacaotributariacofins character varying(3) DEFAULT '001'::character varying, -- Utilizar o cadastro de csts do cofins
reduzidocreditovenda integer,
sequenciacontingencia integer,
modalidadecontingencia integer, -- NULO - NÃO É CONTINGÊNCIA,1 - FS-DA, 2 - SVC
dadosadicionaiscte character varying(36),
usuariolotecte integer, -- Usuario que gerou o lote do CTe
situacaotributariaicms character varying(3),
valorbasecalculoaproveitamentocreditoicms numeric(15,2) DEFAULT 0,
percaliquotaaproveitamentocreditoicms numeric(6,2) DEFAULT 0,
valoraproveitamentocreditoicms numeric(15,2) DEFAULT 0,
responsavelseguro integer, -- 1 - Remetente;, 2 - Expedidor;, 3 - Recebedor;, 4 - Destinatário;, 5 - Emitente do CT-e;, 6 - Tomador de Serviço
teste integer,
opcaofiscalemitente integer, -- 1 - Optante simples, 2 - Optante pelo credito presumido do ICMS, 3 - Nao optante por credito presumido do ICMS (Debito/credito), 4 - Outro
pesobalanca numeric(11,3) DEFAULT 0,
CONSTRAINT pk_con_g_e_f_u_difnum_ser_num PRIMARY KEY (grupo , empresa , filial , unidade , diferenciadornumero , serie , numero ),
CONSTRAINT ri_fk_con_car1 FOREIGN KEY (carreta1)
REFERENCES veiculo (placa) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_car2 FOREIGN KEY (carreta2)
REFERENCES veiculo (placa) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_car3 FOREIGN KEY (carreta3)
REFERENCES veiculo (placa) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_cnpcpfcodpagfre FOREIGN KEY (cnpjcpfcodigopagadorfrete)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_cnpcpfcodtomser FOREIGN KEY (cnpjcpfcodigotomadorservico)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_cnpcpfcodvei FOREIGN KEY (cnpjcpfcodigoveiculo)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_con FOREIGN KEY (consignatario)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_des FOREIGN KEY (destinatario)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_docelelote FOREIGN KEY (grupo, empresa, ufemissorcte, tipodocumento, numerolotecte)
REFERENCES documentoeletronicolote (grupo, empresa, uf, tipodocumento, numerolote) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_exp FOREIGN KEY (expedidor)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_banced_ageced_conced_codced_modcob FOREIGN KEY (grupo, empresa, bancocedente, agenciacedente, contacedente, codigocedente, modalidadecobranca)
REFERENCES banco_conta_cedente (grupo, empresa, banco, agencia, conta, codigocedente, modalidadecobranca) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_conpag FOREIGN KEY (grupo, empresa, condicaopagamento)
REFERENCES condicaopagamento (grupo, empresa, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_f_tipdoc_seqcon FOREIGN KEY (grupo, empresa, filial, tipodocumento, sequenciacontingencia)
REFERENCES documentoeletronicocontingencia (grupo, empresa, filial, tipodocumento, sequencia) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_f_u FOREIGN KEY (grupo, empresa, filial, unidade)
REFERENCES unidade (grupo, empresa, filial, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_filconespimp_uniconespimp FOREIGN KEY (grupo, empresa, filialconfiguracaoespecificaimpressao, unidadeconfiguracaoespecificaimpressao)
REFERENCES unidade (grupo, empresa, filial, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_fildes_unides_rot FOREIGN KEY (grupo, empresa, filialdestino, unidadedestino, rota)
REFERENCES rota (grupo, empresa, filial, unidade, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_redcreven FOREIGN KEY (grupo, empresa, reduzidocreditovenda)
REFERENCES planoconta_habilitado (grupo, empresa, reduzido) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_segrcf FOREIGN KEY (grupo, empresa, segurorcfdc)
REFERENCES segurorcfdc (grupo, empresa, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_ser FOREIGN KEY (grupo, empresa, serie)
REFERENCES serie (grupo, empresa, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_tipcar FOREIGN KEY (grupo, empresa, tipocarga)
REFERENCES tipocarga (grupo, empresa, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_tipcon FOREIGN KEY (grupo, empresa, tipocontainer)
REFERENCES tipocontainer (grupo, empresa, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_g_e_tipfre FOREIGN KEY (grupo, empresa, tipofrete)
REFERENCES tipofrete (grupo, empresa, codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_mot FOREIGN KEY (motorista)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_natope FOREIGN KEY (naturezaoperacao)
REFERENCES naturezaoperacao (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paicol_ufcol_cidcol FOREIGN KEY (paiscoleta, ufcoleta, cidadecoleta)
REFERENCES cidade (pais, uf, nome) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paidesadu_ufdesadu_ciddesadu FOREIGN KEY (paisdesembaracoaduaneiro, ufdesembaracoaduaneiro, cidadedesembaracoaduaneiro)
REFERENCES cidade (pais, uf, nome) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paidescalimp_ufdescalimp_ciddescalimp FOREIGN KEY (paisdestinocalculoimposto, ufdestinocalculoimposto, cidadedestinocalculoimposto)
REFERENCES cidade (pais, uf, nome) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paidestab_ufdestab FOREIGN KEY (paisdestinotabela, ufdestinotabela)
REFERENCES estado (pais, sigla) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paidestab_ufdestab_ciddestab FOREIGN KEY (paisdestinotabela, ufdestinotabela, cidadedestinotabela)
REFERENCES cidade (pais, uf, nome) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paient_ufent_cident FOREIGN KEY (paisentrega, ufentrega, cidadeentrega)
REFERENCES cidade (pais, uf, nome) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paioricalimp_uforicalimp_cidoricalimp FOREIGN KEY (paisorigemcalculoimposto, uforigemcalculoimposto, cidadeorigemcalculoimposto)
REFERENCES cidade (pais, uf, nome) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paioritab_uforitab FOREIGN KEY (paisorigemtabela, uforigemtabela)
REFERENCES estado (pais, sigla) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_paioritab_uforitab_cidoritab FOREIGN KEY (paisorigemtabela, uforigemtabela, cidadeorigemtabela)
REFERENCES cidade (pais, uf, nome) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_rec FOREIGN KEY (recebedor)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_red FOREIGN KEY (redespacho)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_rem FOREIGN KEY (remetente)
REFERENCES cadastro (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_tipdoc FOREIGN KEY (tipodocumento)
REFERENCES tipodocumento (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_usulotecte FOREIGN KEY (usuariolotecte)
REFERENCES usuario (codigo) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT ri_fk_con_vei FOREIGN KEY (veiculo)
REFERENCES veiculo (placa) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE RESTRICT,
CONSTRAINT uk_con_g_e_f_u_difnum_ser_numconfor UNIQUE (grupo , empresa , filial , unidade , diferenciadornumero , serie , numerocontroleformulario )
)
WITH (
OIDS=TRUE
);
Uff ..好吧,在那个巨大的桌子之后,创建并且有很多行,我正在尝试创建另一个表:
CREATE TABLE conhecimento_condicaoespecial_aviso
(
grupo integer NOT NULL,
empresa integer NOT NULL,
filial integer NOT NULL,
unidade integer NOT NULL,
diferenciadornumero integer NOT NULL,
serie integer NOT NULL,
numero integer NOT NULL,
sequencia integer NOT NULL,
tipodocumento integer NOT NULL,
aviso integer NOT NULL,
dtinc timestamp without time zone,
codigousuario integer,
acao integer NOT NULL DEFAULT 1, -- 1 - Bloquear, 2 - Liberar
origem integer NOT NULL DEFAULT 1, -- 1 - Tela, 2 - EDI, 3 - XML
complemento character varying,
corrigido integer NOT NULL DEFAULT 2, -- 1 - Sim, 2 -Nã
CONSTRAINT pk_conceav_g_e_f_u_difnum_ser_num_seq_tipdoc_avi PRIMARY KEY (grupo , empresa , filial , unidade , diferenciadornumero , serie , numero , sequencia , tipodocumento , aviso ),
CONSTRAINT ri_fk_conceav_g_e_f_u_difnum_ser_num FOREIGN KEY (grupo, empresa, filial, unidade, diferenciadornumero, serie, numero)
REFERENCES conhecimento (grupo, empresa, filial, unidade, diferenciadornumero, serie, numero) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
ALTER TABLE conhecimento_condicaoespecial_aviso
OWNER TO postgres;
COMMENT ON COLUMN conhecimento_condicaoespecial_aviso.acao IS '1 - Bloquear, 2 - Liberar';
COMMENT ON COLUMN conhecimento_condicaoespecial_aviso.origem IS '1 - Tela, 2 - EDI, 3 - XML';
COMMENT ON COLUMN conhecimento_condicaoespecial_aviso.corrigido IS '1 - Sim, 2 -Nã';
-- Index: fk_conceav_g_e_f_u_difnum_ser_num
-- DROP INDEX fk_conceav_g_e_f_u_difnum_ser_num;
CREATE INDEX fk_conceav_g_e_f_u_difnum_ser_num
ON conhecimento_condicaoespecial_aviso
USING btree
(grupo , empresa , filial , unidade , diferenciadornumero , serie , numero );
-- Trigger: RI_ConstraintTrigger_604902640 on conhecimento_condicaoespecial_aviso
-- DROP TRIGGER "RI_ConstraintTrigger_604902640" ON conhecimento_condicaoespecial_aviso;
CREATE CONSTRAINT TRIGGER "RI_ConstraintTrigger_604902640"
AFTER INSERT
ON conhecimento_condicaoespecial_aviso
FOR EACH ROW
EXECUTE PROCEDURE "RI_FKey_check_ins"();
-- Trigger: RI_ConstraintTrigger_604902808 on conhecimento_condicaoespecial_aviso
-- DROP TRIGGER "RI_ConstraintTrigger_604902808" ON conhecimento_condicaoespecial_aviso;
CREATE CONSTRAINT TRIGGER "RI_ConstraintTrigger_604902808"
AFTER UPDATE
ON conhecimento_condicaoespecial_aviso
FOR EACH ROW
EXECUTE PROCEDURE "RI_FKey_check_upd"();
而且,好吧,当我尝试创建第二个表时,返回此错误,
注意:ALTER TABLE / ADD PRIMARY KEY将创建隐式索引 表的“pk_conceav_g_e_f_u_difnum_ser_num_seq_tipdoc_avi” “conhecimento_condicaoespecial_aviso”语境:SQL语句“ALTER 表conhecimento_condicaoespecial_aviso ADD CONSTRAINT pk_conceav_g_e_f_u_difnum_ser_num_seq_tipdoc_avi PRIMARY KEY (GRUPO,Empresa与,孝,unidade,diferenciadornumero,系列,NUMERO,sequencia,tipodocumento,说Aviso)” PL / pgSQL函数“_fnc_tmp_conversao_2013010218043442_302”第75行 SQL语句错误:没有给定唯一约束匹配 引用表“conhecimento”的键语境:SQL语句 “ALTER TABLE conhecimento_condicaoespecial_aviso ADD CONSTRAINT ri_fk_conceav_g_e_f_u_difnum_ser_num外键 (GRUPO,Empresa与,孝,unidade,diferenciadornumero,系列,NUMERO) 参考文献conhecimento (grupo,empresa,filial,unidade,diferenciadornumero,serie,numero)ON 更新CASCADE ON DELETE CASCADE“PL / pgSQL函数 SQL语句中的“_fnc_tmp_conversao_2013010218043442_302”第78行
*** 错误 ** *
错误:没有与给定键匹配的唯一约束 引用表“conhecimento”SQL状态:42830 Contexto:SQL 声明“ALTER TABLE conhecimento_condicaoespecial_aviso ADD CONSTRAINT ri_fk_conceav_g_e_f_u_difnum_ser_num FOREIGN KEY (GRUPO,Empresa与,孝,unidade,diferenciadornumero,系列,NUMERO) 参考文献conhecimento (grupo,empresa,filial,unidade,diferenciadornumero,serie,numero)ON 更新CASCADE ON DELETE CASCADE“PL / pgSQL函数 SQL语句中的“_fnc_tmp_conversao_2013010218043442_302”第78行
我已经检查了第一个表中的重复记录,并寻找重复的列名,但是,我没有发现任何错误..
答案 0 :(得分:2)
PostgreSQL认为表“conhecimento”中的列集{grupo,empresa,filial,unidade,diferenciadornumero,serie,numero}没有UNIQUE约束。
乍一看,PostgreSQL似乎是正确的,因为它通常是。 (PostgreSQL有很好的错误信息。)你有两种选择。
后来。 。
虽然发布的代码似乎不会导致此错误消息,但OP仍然说这是正确的答案。