Fórum Como disparar trigger no evento before insert de uma tabela #49474
21/02/2005
0
Estou usando os componentes da palheta INTERBASE
Obrigado desde já
Dr. Interbase
Curtir tópico
+ 0Posts
22/02/2005
Maicongabriel
Estou usando os componentes da palheta INTERBASE
Obrigado desde já[/quote:64af27e94b]
As Triggers são disparadas automaticamente pelo banco! Se ela não esta funcionando, pode ser:
- Código mal implementado na trigger.
- Ideia errada do funcionamento das triggers/generators.
Algum erro lhe é apresentado? Ou simplesmente nenhum código é gerado pelo generator? Qual é o código da sua Trigger ?
Gostei + 0
22/02/2005
Afarias
|ibquery.insert ele não dispara a trigger. Como faço isso ?
quando vc dá o comando INSERT vc não fez NADA AINDA no banco -- a trigger só será disparada com a execução do comando SQL INSERT, isso só vai ocorrer após o post.
para vc q usa IBX, umas dicas:
não use o método Insert, use Append.
não utilize generators com triggers, use a propriedade GeneratorField do componente e configure para OnNewRecord ou BeforePost
Leia outros posts neste fórum sobre generators e auto-incremento
T+
Gostei + 0
22/02/2005
Fred
OBS: (Isso com DBExpress);
function TfrmPadrao.AutoInc(gen : string): integer;
var
ResultSet : TCustomSQLDataSet;
SQLstmt : string;
begin
result := 0;
SQLstmt := ´select gen_id(´+gen+´,1) ´ +
´as VALOR from RDB$DATABASE;´;
ResultSet := nil;
try
dm.SQLConnection1.Execute(SQLstmt, nil, @ResultSet);
if Assigned(ResultSet) then
Result := ResultSet.FieldByName(´VALOR´).AsInteger;
finally
ResultSet.Free;
end;
end;
ai no evento OnNewRecord ou outro semelhante vc coloca seudataSetCODIGO.AsInteger := AutoInc(´NOMEDOGENERATOR´);
Gostei + 0
22/02/2005
Fred
coloque o seguinte codigo na query
SELECT GEN_ID(GEN_PAGAMENTO_ID,1) AS VALOR FROM RDB$DATABASE
O PROBLEMA EH QUE VC TERIA QUE TER UMA QUERY PRA CADA GENERATOR!!
OBS: TESTEI NO IBCONSOLE E FUNCIONOU 8)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)