dúvidas iniciais no uso do firebird...

Firebird

29/03/2005

como trabalhar com campo autoincremento no firebird.


campo sequencial!!! como?


Thiagopedro

Thiagopedro

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

29/03/2005

Crie o campo que deverá ser incrementado automaticamente (normalmente Integer)

Você deve criar um generator com o comando:
CREATE GENERATOR nome_generator. 


Uma das maneiras mais comuns de associar o generator ao campo Integer que deverá ser incrementado é via trigger, assim:

CREATE TRIGGER nome_trigger FOR nome_tabela 
BEFORE INSERT 
AS 
BEGIN 
IF (NEW.nome_campo IS NULL) THEN 
NEW.nome_campo = GEN_ID(nome_generator, 1); 
END



GOSTEI 0
Henrique Rodrigues

Henrique Rodrigues

29/03/2005

tenho esta mesma dúvida, mas onde coloco estes comandos?


GOSTEI 0
Henrique Rodrigues

Henrique Rodrigues

29/03/2005

já consegui, valeu


GOSTEI 0
Thiagopedro

Thiagopedro

29/03/2005

colegas, é o seguinte

criei certinho o generator, até aí blz.

quando fui executar o comando a seguir via sql deu o seguinte erro:

CREATE TRIGGER Codigo_Auto FOR Clientes
BEFORE INSERT
AS
BEGIN
IF (NEW.Codigo IS NULL) THEN
NEW.Codigo = GEN_ID(GEN_CLIENTE, 1);
END


erro:

ISC ERROR CODE:335544569

ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command

Statement: CREATE TRIGGER Codigo_Auto FOR Clientes
BEFORE INSERT
AS
BEGIN
IF (NEW.Codigo IS NULL) THEN
NEW.Codigo = GEN_ID(GEN_CLIENTE, 1)


----------


observações: esta tabela já contém dados e o campo código esta sequencialmente preenchido.


GOSTEI 0
Gandalf.nho

Gandalf.nho

29/03/2005

Tente assim, deve funcionar:

SET TERM ^;
CREATE TRIGGER Codigo_Auto FOR Clientes 
BEFORE INSERT 
AS 
BEGIN 
    IF (NEW.Codigo IS NULL) THEN 
        NEW.Codigo = GEN_ID(GEN_CLIENTE, 1); 
END ^
SET TERM ;^



GOSTEI 0
Thiagopedro

Thiagopedro

29/03/2005

valeu funcionou!!!


GOSTEI 0
Afarias

Afarias

29/03/2005

Se vc é iniciante sugiro q leia este tópico:

http://forum.clubedelphi.net/viewtopic.php?t=30575

tb sugiro q leia outros tópicos sobre auto-incremento neste fórum -- triggers para auto-incremento geralmente são ´problemas´ -- para iniciantes principalmente. :-)


T+


GOSTEI 0
POSTAR