Problemas com Trigger para campo auto-incremento.

Firebird

05/12/2003

Estou usando essa trigger para cirar um campo auto-incrementável. Porém no momento que eu vou salvar o registro e o campo não possuir algum valor, o registro não é salvo e a trigger não é executada.

Trigger utilizada:
SET TERM ^ ;


/* Triggers only will work for SQL triggers */

CREATE TRIGGER ´CLIENTESGENERATOR´ FOR ´CLIENTES´
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
IF (NEW.CLICOD IS NULL OR NEW.CLICOD = 0)
THEN NEW.CLICOD = GEN_ID(Clientes_CLICOD_Gen, 1);
END
^

COMMIT WORK ^
SET TERM ;^


Se alguém puder me ajudar. Obrigado.


Lefarr

Lefarr

Curtidas 0

Respostas

Lefarr

Lefarr

05/12/2003

Também tentei essa trigger, mas também não funcionou.

SET TERM ^ ;


/* Triggers only will work for SQL triggers */

CREATE TRIGGER TRIG_GEN_OFRECIMIENTOS FOR OFRECIMIENTOS
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
NEW.NUM_OFRECIMIENTO = GEN_ID (GEN_OFRECIMIENTOS,1);
END
^

COMMIT WORK ^
SET TERM ;^


GOSTEI 0
Afarias

Afarias

05/12/2003

isso já foi bastante discutido neste fórum. A trigger é executada no servidor -- então, 1) se seu campo está como REQUIRED=TRUE então o ´cliente´ (componente DataSet) não vai deixar vc postar o registro (jogue algo no campo, como 0 ou coloque como required = False) -- e 2) como a trigger vai executar no servidor, não tem como o ´cliente´ saber o valor gerado, a nào ser q vc execute a query novamente.

Faça uma pesquisa em GENERATOR neste fórum e verá todas as dicas e mensagens a respeito.

TRIGGERS NÃO SÃO UMA BOA OPÇÃO PARA CAMPOS AUTO-INCREMENTO NA MAIOR PARTE DOS CASOS!!!

Vc pode usar os generators ´pelo cliente´ com um SQL como::

SELECT GEN_ID(nome_generator,1) FROM RDB$DATABASE


faça a consulta no fórum para ter mais detalhes.


T+


GOSTEI 0
POSTAR