1
I’m going through a problem with Postgresql, 8.1.
When adding constraints
it returns this error:
SQL error:
ERROR: there is no Unique Constraint matching Given Keys for referenced table "called"
Follow the code I’m using:
CREATE TABLE "administrador" (
"administrador_id" serial NOT NULL,
"nome" varchar(200) NOT NULL,
"cpf" varchar(14) NOT NULL,
"rg" varchar(11) NOT NULL,
"email" varchar(200) NOT NULL,
"endereco" varchar(255) NOT NULL,
"numero_endereco" varchar(15) NOT NULL,
"complemento" varchar(255) NULL,
"bairro" varchar(255) NOT NULL,
"cep" varchar(9) NOT NULL,
"cidade" varchar(255) NOT NULL,
"uf" char(2) NOT NULL ,
"telefone" varchar(21) NOT NULL,
"data_cadastro" date NOT NULL,
"status" char(1) NOT NULL DEFAULT 1,
"senha" varchar(100) NOT NULL,
PRIMARY KEY("administrador_id")
);
COMMENT ON COLUMN "administrador"."cpf" IS '999.999.999-99';
COMMENT ON COLUMN "administrador"."rg" IS '9.999.999';
COMMENT ON COLUMN "administrador"."cep" IS '99999-999';
COMMENT ON COLUMN "administrador"."uf" IS 'Estado';
COMMENT ON COLUMN "administrador"."telefone" IS '+99 (999) 9-9999-9999';
COMMENT ON COLUMN "administrador"."status" IS '0 = Inativo; 1 = Ativo';
CREATE TABLE "chamado" (
"chamado_id" bigserial NOT NULL,
"empresa_cliente_empresa_id" integer NOT NULL,
"titulo" varchar(200) NOT NULL,
"breve_descricao" varchar(255) NOT NULL,
"descricao" text NULL,
"data" date NOT NULL,
"horario" time NOT NULL,
"urgencia" char(1) NOT NULL DEFAULT 0,
"usuario_solicitante" integer NULL,
"usuario_responsavel" integer NOT NULL,
"status" char(1) NOT NULL,
PRIMARY KEY("chamado_id","empresa_cliente_empresa_id","usuario_solicitante","usuario_responsavel")
);
COMMENT ON COLUMN "chamado"."urgencia" IS '0 = Extremamente Baixa; 1 = Baixa; 2 = Normal; 3 = Alta; 4 = Extremamente Alta';
COMMENT ON COLUMN "chamado"."status" IS '0 = Pendente; 1 = Em Atendimento; 3 = Atendido, mas não resolvido; 4 = Atendido e resolvido';
CREATE TABLE "dado_extra_administrador" (
"administrador_administrador_id" integer NOT NULL,
"dado_id" serial NOT NULL,
"descricao" varchar(255) NOT NULL,
PRIMARY KEY("administrador_administrador_id","dado_id")
);
CREATE TABLE "dado_extra_empresa_cliente" (
"empresa_cliente_empresa_id" integer NOT NULL,
"dado_id" serial NOT NULL,
"descricao" varchar(255) NOT NULL,
PRIMARY KEY("empresa_cliente_empresa_id","dado_id")
);
CREATE TABLE "dado_extra_usuario" (
"usuario_usuario_id" integer NOT NULL,
"dado_id" serial NOT NULL,
"descricao" varchar(255) NOT NULL,
PRIMARY KEY("usuario_usuario_id","dado_id")
);
CREATE TABLE "departamento" (
"projeto_empresa_cliente_empresa_id" integer NOT NULL,
"projeto_projeto_id" integer NOT NULL,
"departamento_id" serial NOT NULL,
"titulo" varchar(200) NOT NULL,
"descricao" text NOT NULL,
"data_criacao" date NOT NULL,
"coordernadas_mapa" text NOT NULL,
"coordernadas_posicionamento" text NOT NULL,
"cor_mapa" varchar(10) NOT NULL,
"status" char(1) NOT NULL DEFAULT 1,
PRIMARY KEY("projeto_empresa_cliente_empresa_id","projeto_projeto_id","departamento_id")
);
COMMENT ON COLUMN "departamento"."status" IS '0 = Inativo; 1 = Ativo';
CREATE TABLE "empresa_cliente" (
"empresa_id" serial NOT NULL,
"nome_fantasia" varchar(255) NOT NULL,
"razao_social" varchar(255) NOT NULL,
"cnpj" varchar(18) NOT NULL,
"endereco" varchar(200) NOT NULL,
"numero_endereco" varchar(15) NOT NULL,
"complemento" varchar(255) NULL,
"bairro" varchar(200) NOT NULL,
"cep" varchar(9) NOT NULL,
"cidade" varchar(200) NOT NULL,
"uf" char(2) NOT NULL ,
"email" varchar(200) NOT NULL,
"data_cadastro" date NOT NULL,
"status" char(1) NOT NULL DEFAULT 1,
PRIMARY KEY("empresa_id")
);
COMMENT ON COLUMN "empresa_cliente"."cnpj" IS '99.999.999/9999-99';
COMMENT ON COLUMN "empresa_cliente"."cep" IS '99999-999';
COMMENT ON COLUMN "empresa_cliente"."status" IS '0 = Inativa; 1 = Ativa';
CREATE TABLE "equipamento" (
"equipamento_id" serial NOT NULL,
"sala_sala_id" integer NOT NULL,
"sala_departamento_departamento_id" integer NOT NULL,
"sala_departamento_projeto_projeto_id" integer NOT NULL,
"sala_departamento_projeto_empresa_cliente_empresa_id" integer NOT NULL,
"titulo" varchar(200) NOT NULL,
"descricao" text NOT NULL,
"data_criacao" date NOT NULL,
"status" char(1) NOT NULL DEFAULT 1,
"coordenadas_design" text NOT NULL,
"cordenadas_posicionamento" text NOT NULL,
"cor_design" varchar(10) NOT NULL,
PRIMARY KEY("equipamento_id","sala_sala_id","sala_departamento_departamento_id","sala_departamento_projeto_projeto_id","sala_departamento_projeto_empresa_cliente_empresa_id")
);
COMMENT ON COLUMN "equipamento"."status" IS '0 = Inativo; 1 = Ativo';
CREATE TABLE "funcionalidade_administrador" (
"funcionalidade_id" serial NOT NULL,
"descricao" varchar(255) NOT NULL,
"status" char(1) NOT NULL DEFAULT 1,
PRIMARY KEY("funcionalidade_id")
);
COMMENT ON COLUMN "funcionalidade_administrador"."status" IS '0 = Inativa/Oculta; 1 = Ativa';
CREATE TABLE "funcionalidade_usuario" (
"funcionalidade_id" serial NOT NULL,
"descricao" varchar(255) NOT NULL,
"status" char(1) NOT NULL DEFAULT 1,
PRIMARY KEY("funcionalidade_id")
);
COMMENT ON COLUMN "funcionalidade_usuario"."status" IS '0 = Inativa/Oculta; 1 = Ativa';
CREATE TABLE "item_invetario_empresa_cliente" (
"item_id" bigserial NOT NULL,
"empresa_cliente_empresa_id" integer NOT NULL,
"titulo" varchar(200) NOT NULL,
"descricao" text NOT NULL,
"data_cadastro" date NOT NULL,
"valor_item" float NOT NULL,
PRIMARY KEY("item_id","empresa_cliente_empresa_id")
);
CREATE TABLE "log_atividade_usuario" (
"usuario_usuario_id" integer NOT NULL,
"usuario_empresa_cliente_empresa_id" integer NOT NULL,
"log_id" bigserial NOT NULL,
"data" date NOT NULL,
"horario" time NOT NULL,
"descricao" varchar(255) NOT NULL,
PRIMARY KEY("usuario_empresa_cliente_empresa_id","log_id","usuario_usuario_id")
);
CREATE TABLE "procedimento_chamado" (
"procedimento_id" serial NOT NULL,
"chamado_id" varchar(25) NOT NULL,
"descricao" text NOT NULL,
"data" date NOT NULL,
"horario" time NOT NULL,
"chamado_empresa_empresa_cliente_empresa_id" integer NOT NULL,
PRIMARY KEY("procedimento_id","chamado_id","chamado_empresa_empresa_cliente_empresa_id")
);
CREATE TABLE "projeto" (
"empresa_cliente_empresa_id" integer NOT NULL,
"projeto_id" serial NOT NULL,
"titulo" varchar(200) NOT NULL,
"descricao" text NOT NULL,
"data_criacao" date NOT NULL,
"status" char(1) NOT NULL DEFAULT 1,
"coordenadas_mapa" text NOT NULL,
"cor_mapa" varchar(10) NOT NULL,
PRIMARY KEY("projeto_id","empresa_cliente_empresa_id")
);
COMMENT ON COLUMN "projeto"."status" IS '0 = Inativo; 1 = Ativo';
CREATE TABLE "relacao_categoria_chamado" (
"chamado_id" varchar(25) NOT NULL,
"projeto_projeto_id" integer NULL,
"departamento_departamento_id" integer NULL,
"sala_sala_id" integer NULL,
"equipamento_equipamento_id" integer NULL,
"categoria" varchar(50) NOT NULL,
"chamado_empresa_empresa_cliente_empresa_id" integer NOT NULL,
PRIMARY KEY("chamado_id","projeto_projeto_id","departamento_departamento_id","sala_sala_id","equipamento_equipamento_id","categoria","chamado_empresa_empresa_cliente_empresa_id")
);
COMMENT ON COLUMN "relacao_categoria_chamado"."categoria" IS 'projeto, departamento, sala ou equipamento';
CREATE TABLE "relacao_fun_admin" (
"administrador_administrador_id" integer NOT NULL,
"funcionalidade_administrador_funcionalidade_id" integer NOT NULL,
PRIMARY KEY("administrador_administrador_id","funcionalidade_administrador_funcionalidade_id")
);
CREATE TABLE "relacao_fun_user" (
"usuario_usuario_id" integer NOT NULL,
"funcionalidade_usuario_funcionalidade_id" integer NOT NULL,
PRIMARY KEY("usuario_usuario_id","funcionalidade_usuario_funcionalidade_id")
);
CREATE TABLE "relacao_proce_item_inven" (
"item_inventario_empresa_cliente_item_id" integer NOT NULL,
"procedimento_chamado_procedimento_id" varchar(25) NOT NULL,
"data" date NOT NULL,
"horario" time NOT NULL,
PRIMARY KEY("item_inventario_empresa_cliente_item_id","procedimento_chamado_procedimento_id")
);
CREATE TABLE "sala" (
"sala_id" serial NOT NULL,
"departamento_departamento_id" integer NOT NULL,
"departamento_projeto_empresa_cliente_empresa_id" varchar(25) NOT NULL,
"departamento_projeto_projeto_id" varchar(25) NOT NULL,
"titulo" varchar(200) NOT NULL,
"descricao" text NOT NULL,
"staus" char(1) NOT NULL DEFAULT 1,
"data_criacao" date NOT NULL,
"coordenadas_mapa" text NOT NULL,
"coordenadas_posicionamento" text NOT NULL,
"cor_mapa" varchar(10) NOT NULL,
PRIMARY KEY("sala_id","departamento_departamento_id","departamento_projeto_empresa_cliente_empresa_id","departamento_projeto_projeto_id")
);
COMMENT ON COLUMN "sala"."staus" IS '0 = Inativo; 1 = Ativo';
CREATE TABLE "usuario" (
"empresa_cliente_empresa_id" integer NOT NULL,
"usuario_id" serial NOT NULL,
"nome" varchar(200) NOT NULL,
"cpf" varchar(14) NOT NULL,
"rg" varchar(11) NOT NULL,
"email" varchar(200) NOT NULL,
"endereco" varchar(255) NOT NULL,
"numero_endereco" varchar(15) NOT NULL,
"complemento" varchar(255) NULL,
"bairro" varchar(255) NOT NULL,
"cep" varchar(9) NOT NULL,
"cidade" varchar(255) NOT NULL,
"uf" char(2) NOT NULL ,
"telefone" varchar(21) NOT NULL,
"data_cadastro" date NOT NULL,
"status" char(1) NOT NULL DEFAULT 1,
"senha" varchar(100) NOT NULL,
PRIMARY KEY("usuario_id","empresa_cliente_empresa_id")
);
COMMENT ON COLUMN "usuario"."cpf" IS '999.999.999-99';
COMMENT ON COLUMN "usuario"."rg" IS '9.999.999';
COMMENT ON COLUMN "usuario"."cep" IS '99999-999';
COMMENT ON COLUMN "usuario"."uf" IS 'Estado';
COMMENT ON COLUMN "usuario"."telefone" IS '+99 (999) 9-9999-9999';
COMMENT ON COLUMN "usuario"."status" IS '0 = Inativo; 1 = Ativo';
ALTER TABLE "dado_extra_administrador"
ADD CONSTRAINT "REL_5"
FOREIGN KEY("administrador_administrador_id")
REFERENCES "administrador"("administrador_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_fun_admin"
ADD CONSTRAINT "REL_9"
FOREIGN KEY("administrador_administrador_id")
REFERENCES "administrador"("administrador_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_categoria_chamado"
ADD CONSTRAINT "REL_25"
FOREIGN KEY("chamado_id", "chamado_empresa_empresa_cliente_empresa_id")
REFERENCES "chamado"("chamado_id", "empresa_cliente_empresa_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "procedimento_chamado"
ADD CONSTRAINT "REL_17"
FOREIGN KEY("chamado_id", "chamado_empresa_empresa_cliente_empresa_id")
REFERENCES "chamado"("chamado_id", "empresa_cliente_empresa_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "sala"
ADD CONSTRAINT "REL_12"
FOREIGN KEY("departamento_projeto_empresa_cliente_empresa_id", "departamento_projeto_projeto_id", "departamento_departamento_id")
REFERENCES "departamento"("projeto_empresa_cliente_empresa_id", "projeto_projeto_id", "departamento_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_categoria_chamado"
ADD CONSTRAINT "REL_19"
FOREIGN KEY("departamento_departamento_id")
REFERENCES "departamento"("departamento_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "usuario"
ADD CONSTRAINT "REL_7"
FOREIGN KEY("empresa_cliente_empresa_id")
REFERENCES "empresa_cliente"("empresa_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "dado_extra_empresa_cliente"
ADD CONSTRAINT "REL_4"
FOREIGN KEY("empresa_cliente_empresa_id")
REFERENCES "empresa_cliente"("empresa_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "projeto"
ADD CONSTRAINT "REL_10"
FOREIGN KEY("empresa_cliente_empresa_id")
REFERENCES "empresa_cliente"("empresa_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "chamado"
ADD CONSTRAINT "REL_14"
FOREIGN KEY("empresa_cliente_empresa_id")
REFERENCES "empresa_cliente"("empresa_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "item_invetario_empresa_cliente"
ADD CONSTRAINT "REL_22"
FOREIGN KEY("empresa_cliente_empresa_id")
REFERENCES "empresa_cliente"("empresa_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_categoria_chamado"
ADD CONSTRAINT "REL_21"
FOREIGN KEY("equipamento_equipamento_id")
REFERENCES "equipamento"("equipamento_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_fun_admin"
ADD CONSTRAINT "REL_8"
FOREIGN KEY("funcionalidade_administrador_funcionalidade_id")
REFERENCES "funcionalidade_administrador"("funcionalidade_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_fun_user"
ADD CONSTRAINT "REL_3"
FOREIGN KEY("funcionalidade_usuario_funcionalidade_id")
REFERENCES "funcionalidade_usuario"("funcionalidade_id");
ALTER TABLE "relacao_proce_item_inven"
ADD CONSTRAINT "REL_23"
FOREIGN KEY("item_inventario_empresa_cliente_item_id")
REFERENCES "item_invetario_empresa_cliente"("item_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_proce_item_inven"
ADD CONSTRAINT "REL_24"
FOREIGN KEY("procedimento_chamado_procedimento_id")
REFERENCES "procedimento_chamado"("procedimento_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "departamento"
ADD CONSTRAINT "REL_11"
FOREIGN KEY("projeto_empresa_cliente_empresa_id", "projeto_projeto_id")
REFERENCES "projeto"("empresa_cliente_empresa_id", "projeto_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_categoria_chamado"
ADD CONSTRAINT "REL_18"
FOREIGN KEY("projeto_projeto_id")
REFERENCES "projeto"("projeto_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "equipamento"
ADD CONSTRAINT "REL_13"
FOREIGN KEY("sala_sala_id", "sala_departamento_departamento_id", "sala_departamento_projeto_empresa_cliente_empresa_id", "sala_departamento_projeto_projeto_id")
REFERENCES "sala"("sala_id", "departamento_departamento_id", "departamento_projeto_empresa_cliente_empresa_id", "departamento_projeto_projeto_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_categoria_chamado"
ADD CONSTRAINT "REL_20"
FOREIGN KEY("sala_sala_id")
REFERENCES "sala"("sala_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "log_atividade_usuario"
ADD CONSTRAINT "REL_6"
FOREIGN KEY("usuario_usuario_id", "usuario_empresa_cliente_empresa_id")
REFERENCES "usuario"("usuario_id", "empresa_cliente_empresa_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "relacao_fun_user"
ADD CONSTRAINT "REL_2"
FOREIGN KEY("usuario_usuario_id")
REFERENCES "usuario"("usuario_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "dado_extra_usuario"
ADD CONSTRAINT "REL_1"
FOREIGN KEY("usuario_usuario_id")
REFERENCES "usuario"("usuario_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "chamado"
ADD CONSTRAINT "REL_15"
FOREIGN KEY("usuario_solicitante")
REFERENCES "usuario"("usuario_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE "chamado"
ADD CONSTRAINT "REL_16"
FOREIGN KEY("usuario_responsavel")
REFERENCES "usuario"("usuario_id")
ON DELETE NO ACTION
ON UPDATE NO ACTION ;
ALTER TABLE ONLY "administrador" ALTER COLUMN "uf" SET DEFAULT 'sc';
ALTER TABLE ONLY "empresa_cliente" ALTER COLUMN "uf" SET DEFAULT 'sc';
ALTER TABLE ONLY "usuario" ALTER COLUMN "uf" SET DEFAULT 'sc';
Please inform us on which line the error happens.
– user7261
Unfortunately phpPgAdmin does not return the line, only: ERROR: there is no Unique Constraint matching Given Keys for referenced table "called"
– Batels
Fernando, try running query by query and check which point is returning this error.
– gmsantos
Fernando, the error message itself should give a hint of where this error is, no? If she cites the table "called", then the problem can only be in something involving this table... It is not necessary (nor desirable) if you put the code whole in the question, because it only leaves people with "laziness" [justified] to read the whole code looking for the wrong part. I say this because you should get better and faster answers if "help us help you". :)
– mgibsonbr