Fórum trigger e generator não funcionam #38651
10/09/2003
0
Criei um generator GEN_AUSENTE e criei um trigger AUTO_COD para que o campo codigo da tabela ausente pudesse ser autoincremento, o generator gera sempre o codigo + 1, mas isso não vai para o campo codigo da tabela como foi definido no trigger.
NEW.CODIGO = GEN_ID(GEN_AUSENTE, 1)
como resolver isso, estou dbexpress?
NEW.CODIGO = GEN_ID(GEN_AUSENTE, 1)
como resolver isso, estou dbexpress?
Lcarneiro
Curtir tópico
+ 0
Responder
Posts
12/09/2003
Afarias
|mas isso não vai para o campo codigo da tabela como foi definido no
|trigger.
Claro q vai... (se a trigger for BEFORE INSERT). Agora, como o valor está sendo gerado no servidor, não tem como o ´cliente´ ficar sabendo -- a não ser q vc feche/abra a consulta.
Este método de gerar campos ´autoincremento´ é extremamente difundido para os iniciantes sem nenhum sentido pois não é o método ´esperado´.
Faça o seguinte, no evento BeforePost ou OnNewRecord do seu DataSet (ou em outro lugar se preferir) coloque um código do tipo::
with QueryGeraCodigo do
try
Open;
NovoCodigo := Fields[0].AsInteger;
finally
Close;
end;
Onde ::
QueryGeraCodigo é uma query com um SQL do tipo::
SELECT GEN_ID(nome_generator, 1) FROM RDB$DATABASE
e, NovoCodigo vc deve substituir pelo campo CODIGO da tabela q vc pretende inserir os dados.
T+
|trigger.
Claro q vai... (se a trigger for BEFORE INSERT). Agora, como o valor está sendo gerado no servidor, não tem como o ´cliente´ ficar sabendo -- a não ser q vc feche/abra a consulta.
Este método de gerar campos ´autoincremento´ é extremamente difundido para os iniciantes sem nenhum sentido pois não é o método ´esperado´.
Faça o seguinte, no evento BeforePost ou OnNewRecord do seu DataSet (ou em outro lugar se preferir) coloque um código do tipo::
with QueryGeraCodigo do
try
Open;
NovoCodigo := Fields[0].AsInteger;
finally
Close;
end;
Onde ::
QueryGeraCodigo é uma query com um SQL do tipo::
SELECT GEN_ID(nome_generator, 1) FROM RDB$DATABASE
e, NovoCodigo vc deve substituir pelo campo CODIGO da tabela q vc pretende inserir os dados.
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)