Zerar Generator por umTrigger

Firebird

05/10/2004

olá pessoal, como faço para zerar um generator por um trigger ex:

toda vez que eu iniciar um novo registro em uma tabela o trigger zera o generator genteste por exemplo.


valeu pessoal :D


Tap_pedroso

Tap_pedroso

Curtidas 0

Respostas

Fsflorencio

Fsflorencio

05/10/2004

CRIE UMA TRIGGER NO AFTER OU BEFORE INSERT DA TABELA E COLOQUE O CÓDIGO:

set generator genteste to 0;


GOSTEI 0
Tap_pedroso

Tap_pedroso

05/10/2004

vc não tem outra maneira porque eu coloquei [b:daab635834]set generator teste to 0[/b:daab635834] dentro da trigger e ela não aceita o set dentro do trrigger e não compila


GOSTEI 0
Afarias

Afarias

05/10/2004

|set generator genteste to 0;

set generator NÃO pode ser usado em Triggers e Procedures. Se deseja ´zerar´ um generator use::

i = gen_id(generator, -1 * gen_id(generator, 0));


T+


GOSTEI 0
Fsflorencio

Fsflorencio

05/10/2004

é mesmo.


GOSTEI 0
Tap_pedroso

Tap_pedroso

05/10/2004

blz então eu só crio a trigger declaro a variavel i como integer e na trigger coloco somente a linha de codigo ex:

SET TERM # ;
CREATE TRIGGER "ZERAGEN" FOR "TABPEDIDO" 
ACTIVE BEFORE INSERT POSITION 0
AS
DECLARE VARIABLE i INTEGER;
 BEGIN
  i = gen_id(NRITEMPEDIDO, -1 * gen_id(NRITEMPEDIDO, 0)); 
 END 
SET TERM ;



GOSTEI 0
Bolus

Bolus

05/10/2004

Caros colegas,
Outra solução para zerar o Generator é utilizar o execute statement,
utilizei em um projeto e funcionou...
coloque na trigger a seguinte linha.
  execute statement "set generator genteste to 0";


Isso deve solucionar o seu problema também....

Obs.: Utilizei no Firebird 1.5.1....

Espero ter ajudado.


GOSTEI 0
Afarias

Afarias

05/10/2004

apenas o Firebird 1.5 suporta EXECUTE STATEMENT


T+


GOSTEI 0
Rogério Clemente

Rogério Clemente

05/10/2004

execute statement 'alter sequence NomeDoGerador restart with 0';

Uso o Firebird 2.5. Não testei em outras versões... Vc pode descobrir o comando certo usando o IBExpert. Zera um generator pelo IBExpert e veja o comando que ele executa.
GOSTEI 0
POSTAR