Violação de PK
Tenho a seguinte SP no banco que quando eu mando executar da o seguinte erro:
Invalid insert or update value(s): object columns are
constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint ´PK_CADASTRO_PESSOA´ on table ´CADASTRO_PESSOA´.
Eis a SP:
CREATE PROCEDURE SP_UPD_CADASTRO_PESSOA (
COD_PESSOA INTEGER,
PAPEL_PESSOA SMALLINT,
NOME_COMPLETO VARCHAR(60),
TELEFONE VARCHAR(10),
FAX VARCHAR(10),
EMAIL VARCHAR(100),
SITE VARCHAR(100),
CNPJ_CPF VARCHAR(14),
IE_RG VARCHAR(14),
TP_PESSOA CHAR(1),
CONTATO1 VARCHAR(25),
DT_NASC_CONTATO1 DATE,
CONTATO2 VARCHAR(25),
DT_NASC_CONTATO2 DATE,
CELULAR VARCHAR(10),
LIMITE_CREDITO NUMERIC(15,2),
COD_BANCO SMALLINT,
CONTA_CONTABIL VARCHAR(8),
COD_DESCONTO SMALLINT,
OBSERVACAO VARCHAR(100),
PERC_ICMS NUMERIC(15,2),
ST_CLIENTEESPECIAL BOOLEAN,
COD_REGIAO SMALLINT,
ST_REDUCAOICMS BOOLEAN,
ST_ATIVO BOOLEAN,
COD_TRANSPORTADORA INTEGER)
AS
begin
update cadastro_pessoa set cod_pessoa = :cod_pessoa,
papel_pessoa = :papel_pessoa,
nome_completo = :nome_completo,
telefone = :telefone,
fax = :fax,
email = :email,
site = :site,
cnpj_cpf = :cnpj_cpf,
ie_rg = :ie_rg,
tp_pessoa = :tp_pessoa,
contato1 = :contato1,
dt_nasc_contato1 = :dt_nasc_contato1,
contato2 = :contato2,
dt_nasc_contato2 = :dt_nasc_contato2,
celular = :celular,
limite_credito = :limite_credito,
cod_banco = :cod_banco,
conta_contabil = :conta_contabil,
cod_desconto = :cod_desconto,
observacao = :observacao,
perc_icms = :perc_icms,
st_clienteespecial = :st_clienteespecial,
cod_regiao = :cod_regiao,
st_reducaoicms = :st_reducaoicms,
st_ativo = :st_ativo,
cod_transportadora = :cod_transportadora;
when sqlcode -625 do exception erro_campos_obrigatorios;
Tenho uma trigger para inserir automaticamente o numero de cada pessoa, eis a trigger:
CREATE TRIGGER TRG_INC_CADASTRO_PESSOA FOR CADASTRO_PESSOA
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (new.cod_pessoa is null) then
new.cod_pessoa = gen_id(gen_cadastro_pessoa, 1);
end
Onde pode estar o erro?
Sou iniciante, uso o IBexpert e Firebird 1.5
Obrigado,
Rodolfo
Invalid insert or update value(s): object columns are
constrained - no 2 table rows can have duplicate column values.
violation of PRIMARY or UNIQUE KEY constraint ´PK_CADASTRO_PESSOA´ on table ´CADASTRO_PESSOA´.
Eis a SP:
CREATE PROCEDURE SP_UPD_CADASTRO_PESSOA (
COD_PESSOA INTEGER,
PAPEL_PESSOA SMALLINT,
NOME_COMPLETO VARCHAR(60),
TELEFONE VARCHAR(10),
FAX VARCHAR(10),
EMAIL VARCHAR(100),
SITE VARCHAR(100),
CNPJ_CPF VARCHAR(14),
IE_RG VARCHAR(14),
TP_PESSOA CHAR(1),
CONTATO1 VARCHAR(25),
DT_NASC_CONTATO1 DATE,
CONTATO2 VARCHAR(25),
DT_NASC_CONTATO2 DATE,
CELULAR VARCHAR(10),
LIMITE_CREDITO NUMERIC(15,2),
COD_BANCO SMALLINT,
CONTA_CONTABIL VARCHAR(8),
COD_DESCONTO SMALLINT,
OBSERVACAO VARCHAR(100),
PERC_ICMS NUMERIC(15,2),
ST_CLIENTEESPECIAL BOOLEAN,
COD_REGIAO SMALLINT,
ST_REDUCAOICMS BOOLEAN,
ST_ATIVO BOOLEAN,
COD_TRANSPORTADORA INTEGER)
AS
begin
update cadastro_pessoa set cod_pessoa = :cod_pessoa,
papel_pessoa = :papel_pessoa,
nome_completo = :nome_completo,
telefone = :telefone,
fax = :fax,
email = :email,
site = :site,
cnpj_cpf = :cnpj_cpf,
ie_rg = :ie_rg,
tp_pessoa = :tp_pessoa,
contato1 = :contato1,
dt_nasc_contato1 = :dt_nasc_contato1,
contato2 = :contato2,
dt_nasc_contato2 = :dt_nasc_contato2,
celular = :celular,
limite_credito = :limite_credito,
cod_banco = :cod_banco,
conta_contabil = :conta_contabil,
cod_desconto = :cod_desconto,
observacao = :observacao,
perc_icms = :perc_icms,
st_clienteespecial = :st_clienteespecial,
cod_regiao = :cod_regiao,
st_reducaoicms = :st_reducaoicms,
st_ativo = :st_ativo,
cod_transportadora = :cod_transportadora;
when sqlcode -625 do exception erro_campos_obrigatorios;
Tenho uma trigger para inserir automaticamente o numero de cada pessoa, eis a trigger:
CREATE TRIGGER TRG_INC_CADASTRO_PESSOA FOR CADASTRO_PESSOA
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if (new.cod_pessoa is null) then
new.cod_pessoa = gen_id(gen_cadastro_pessoa, 1);
end
Onde pode estar o erro?
Sou iniciante, uso o IBexpert e Firebird 1.5
Obrigado,
Rodolfo
Rodolfo.pirolo
Curtidas 0
Respostas
Rodolfo.pirolo
07/03/2006
Desculpem a nossa falha. Resolvi, era problema de BIOS.
Faltava a clausula where no update.
Favor desconsiderar este tópico.
Obrigado
Rodolfo
Faltava a clausula where no update.
Favor desconsiderar este tópico.
Obrigado
Rodolfo
GOSTEI 0