Melhor jeito pra fazer auto increment no FB
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
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
Curtidas 0
Respostas
Sremulador
12/04/2006
e melhor você utilizar os gatilhos...
GOSTEI 0
Ramms
12/04/2006
Que erro é retornado kra?
Que componentes vc está usando para conexão?
flwz
Que componentes vc está usando para conexão?
flwz
GOSTEI 0
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.
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
12/04/2006
uma das soluções seria [b:f8746280de]retirar[/b:f8746280de] a linha
IF (NEW.CODCLI IS NULL) THEN
da sua trigger
IF (NEW.CODCLI IS NULL) THEN
da sua trigger
GOSTEI 0