Melhor jeito pra fazer auto increment no FB

Firebird

12/04/2006

Estou tentando fazer um campo auto incremento num tabela em um BD firebird mas nao estou consguindo.

Gostaria de saber qual a melhor maneira de trabalhar com campo auto incremento no firebird e usando clientdataset no delphi com Insert/post/edit ao inves de sql.

Aqui e como estou fazendo:

CREATE TABLE CLIENTE(CODCLI INTEGER NOT NULL,
NOME VARCHAR(100),
PRIMARY KEY(CODCLI));

CREATE GENERATOR GEN_CLIENTE;

CREATE TRIGGER TRG_CLIENTE
FOR CLIENTE ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.CODCLI IS NULL) THEN
NEW.CODCLI = GEN_ID(GEN_CLIENTE,1);
END

Se eu testo inserindo no banco com codigo sql ele funciona mas no meu projeto delphi com comando post,insert nao funciona


fico aguardando qualquer ajuda...

obrigado


Ecptavares

Ecptavares

Curtidas 0

Respostas

Sremulador

Sremulador

12/04/2006

e melhor você utilizar os gatilhos...


GOSTEI 0
Ramms

Ramms

12/04/2006

Que erro é retornado kra?
Que componentes vc está usando para conexão?
flwz


GOSTEI 0
Ecptavares

Ecptavares

12/04/2006

Eu to usando sqlconnection,sqldataset,datasetprovider,clientdataset.

Me foi dito que eu teria de passar pro banco qualquer valor q dai o banco ia ver a trigger e mudar entao no delphi eu faço isso:

cdscliente.fieldbyname(´codcli´).asInteger := 1;
cdscliente.fieldbyname(´nome´).asstring := ´Eduardo Tavares´;
cdscliente.post;

ele me retorna uma mensagem q nao pode inserir dois registros com mesmo valor.


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/04/2006

uma das soluções seria [b:f8746280de]retirar[/b:f8746280de] a linha
IF (NEW.CODCLI IS NULL) THEN
da sua trigger


GOSTEI 0
POSTAR