Key Violation no Interbase ???
:arrow: Estou mudando os componentes da guia InterBase para dbExpress
:!: Uma rotina pega os dados de um arquivo .ini e joga no .gdb, mas está ocorrendo um erro ´Key Violation´ - isso acontecia muito no Paradox - após o ApplyUpdates(0)
:?: Alguém sabe o porque
*************************************************************
*************************************************************
*************************************************************
/* Table: PRNLPT, Owner: SYSDBA */
CREATE TABLE ´PRNLPT´
(
´CODIGO´INTEGER,
´TABELA´VARCHAR(25)
);
SET TERM ^ ;
/* Triggers only will work for SQL triggers */
CREATE TRIGGER ´TPRNLPT´ FOR ´PRNLPT´
ACTIVE BEFORE INSERT POSITION 0
as begin
new.Codigo = gen_id(GEN_PRNLPT, 1);
end
^
COMMIT WORK ^
SET TERM ;^
*************************************************************
*************************************************************
*************************************************************
Componentes :
SQLConnection - SQLDataSet - DataSetProvider - ClientDataSet
SQLDataSet
´CODIGO´ - ProviderFlags - [pfInUpdate,pfInWhere,pfInKey]
´TABELA´ - ProviderFlags - [pfInUpdate]
*************************************************************
*************************************************************
*************************************************************
with ClientDataSet do
begin
Append;
FieldByName(´Empresa´).AsString := Trim(EdEmpresa.Text);
FieldByName(´Tabela´).AsString := ArqIni.ReadString(Cabec, IntToStr(Cont) + ´Tabela´, ´´ );
Post;
ApplyUpdates(0);
end;
:!: Uma rotina pega os dados de um arquivo .ini e joga no .gdb, mas está ocorrendo um erro ´Key Violation´ - isso acontecia muito no Paradox - após o ApplyUpdates(0)
:?: Alguém sabe o porque
*************************************************************
*************************************************************
*************************************************************
/* Table: PRNLPT, Owner: SYSDBA */
CREATE TABLE ´PRNLPT´
(
´CODIGO´INTEGER,
´TABELA´VARCHAR(25)
);
SET TERM ^ ;
/* Triggers only will work for SQL triggers */
CREATE TRIGGER ´TPRNLPT´ FOR ´PRNLPT´
ACTIVE BEFORE INSERT POSITION 0
as begin
new.Codigo = gen_id(GEN_PRNLPT, 1);
end
^
COMMIT WORK ^
SET TERM ;^
*************************************************************
*************************************************************
*************************************************************
Componentes :
SQLConnection - SQLDataSet - DataSetProvider - ClientDataSet
SQLDataSet
´CODIGO´ - ProviderFlags - [pfInUpdate,pfInWhere,pfInKey]
´TABELA´ - ProviderFlags - [pfInUpdate]
*************************************************************
*************************************************************
*************************************************************
with ClientDataSet do
begin
Append;
FieldByName(´Empresa´).AsString := Trim(EdEmpresa.Text);
FieldByName(´Tabela´).AsString := ArqIni.ReadString(Cabec, IntToStr(Cont) + ´Tabela´, ´´ );
Post;
ApplyUpdates(0);
end;
Tadeu Pereira
Curtidas 0
Respostas
Cruz
26/05/2003
Parece que o sistema está tentando gravar um campo chave com valores duplicados... Iso acontece quando vc define um campo como unique, e tenta gravar dois registros com o mesmo valor neste campo...
visite [url=http://www.jczdesign.com]JCZ Design Fotografia[/url]
visite [url=http://www.jczdesign.com]JCZ Design Fotografia[/url]
GOSTEI 0
Tadeu Pereira
26/05/2003
Estou usando um TRIGGER junto a um GENERATOR no campo CODIGO que é o campo chave, sendo assim, existe como gravar valores duplicados pois o próprio InterBase gera essa chave unica
GOSTEI 0