Problemas com Trigger para campo auto-incremento.
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.
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
Curtidas 0
Respostas
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 ;^
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
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+
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