Gator27
(usa Ubuntu)
Enviado em 04/06/2012 - 10:37h
Comecei a estudar banco de dados recentemente e estou tendo muita dificuldade.
Gostaria que alguém pudesse me ajudar a tratar este erro aqui.
ERRO: duplicar valor da chave viola a restrição de unicidade "pk_empresa_id"
DETAIL: Chave (idempresa)=(E1 ) já existe.
Uma chave primária nunca poderá ser duplicada.
ALTER TABLE EMPRESA ADD CONSTRAINT PK_EMPRESA_ID PRIMARY KEY (IDEMPRESA);
Porque não posso definir a chave primária para essa coluna?
Quais comando que uso para que E1 possa aparecer nas duas tabelas de funcionários Ana e Lua.
sendo que E1 é o idempresa e Manaus é a cidade empresa.
Porque a chave primaria nao pode ser char tem que ser int e de preferecia auto increment?
como criar um auto increment no postegre? tem que criar uma seguencia e depois associala ao campo que e chave primaria no banco?
create table empresa(
idempresa char (5),
nome_empresa varchar (60),
cidade_empresa varchar (60),
telefone_empresa char (11)
);
create table funcionario(
idfuncionario char (5),
nome_funcionario varchar (60),
celular_funcionario varchar (11),
nome_filho_funcionario varchar (60),
idempresa char (5)
);
create table filho(
idfilho serial,
nome_filho varchar (60),
idfuncionario char (5)
);
-- CRIAÇÃO DAS CHAVES PRIMARIAS
ALTER TABLE EMPRESA ADD CONSTRAINT PK_EMPRESA_ID PRIMARY KEY (IDEMPRESA);
ALTER TABLE FUNCIONARIO ADD CONSTRAINT PK_FUNCIONARIO_ID PRIMARY KEY (IDFUNCIONARIO);
ALTER TABLE FILHO ADD CONSTRAINT PK_FILHO_ID PRIMARY KEY (IDFILHO);
-- CRIACÃO DAS FOREIGN KEY
ALTER TABLE funcionario ADD constraint fk_empresa_funcionario foreign key (IDEMPRESA) references empresa (IDEMPRESA);
ALTER TABLE FILHO ADD CONSTRAINT FK_funcionario_filho FOREIGN KEY (IDFUNCIONARIO) references funcionario (IDFUNCIONARIO);
--ANA
INSERT INTO empresa (idEmpresa, nome_Empresa, telefone_empresa, cidade_empresa ) values ( 'E1', 'IFES', 35261411, 'Manaus');
INSERT INTO funcionario (idFuncionario, nome_funcionario, celular_funcionario, idEmpresa) values ( 'E110' , 'Ana', '99861222', 'E1');
--LUA
INSERT INTO empresa (idEmpresa, nome_Empresa, telefone_Empresa, cidade_Empresa ) values ( 'E1', 'IFES', 35261411, 'Manaus');
INSERT INTO funcionario (idFuncionario, nome_funcionario, celular_funcionario, idEmpresa) values ( 'E111' , 'LUA', '81131099', 'E1');
--Sol
INSERT INTO empresa (idEmpresa, nome_Empresa, telefone_Empresa, cidade_Empresa ) values ( 'E2', 'Petrobras', 35262233, 'Campus');
INSERT INTO funcionario (idFuncionario, nome_funcionario, celular_funcionario, idEmpresa) values ( 'E210' , 'Sol', '81129088', 'E2');