Como Criar trigger em runtime através de uma query
Galera, alguem saber como criar uma trigger por dentro do programa através de uma query eu fiz assim e não funcionou
With QrAux do
Begin
Sql.Clear;
Sql.Add(´SET TERM ^ ;´);
Sql.Add(´ ´);
Sql.Add(´/* Triggers only will work for SQL triggers */ ´);
Sql.Add(´ ´);
Sql.Add(´ CREATE TRIGGER ´BOLETOVENDASTRIGGER´ FOR ´CABVENDAS´ ´);
Sql.Add(´ ACTIVE BEFORE INSERT POSITION 0 ´);
Sql.Add(´ AS ´);
Sql.Add(´ BEGIN ´);
Sql.Add(´ NEW.NBOLETO = GEN_ID(GEN_BOLETOVENDAS,1);´);
Sql.Add(´ END ´);
Sql.Add(´ ´);
Sql.Add(´ ^ ´);
Sql.Add(´ COMMIT WORK ^ ´);
Sql.Add(´ ´);
Sql.Add(´ SET TERM ;^´);
ExecSql;
End;
With QrAux do
Begin
Sql.Clear;
Sql.Add(´SET TERM ^ ;´);
Sql.Add(´ ´);
Sql.Add(´/* Triggers only will work for SQL triggers */ ´);
Sql.Add(´ ´);
Sql.Add(´ CREATE TRIGGER ´BOLETOVENDASTRIGGER´ FOR ´CABVENDAS´ ´);
Sql.Add(´ ACTIVE BEFORE INSERT POSITION 0 ´);
Sql.Add(´ AS ´);
Sql.Add(´ BEGIN ´);
Sql.Add(´ NEW.NBOLETO = GEN_ID(GEN_BOLETOVENDAS,1);´);
Sql.Add(´ END ´);
Sql.Add(´ ´);
Sql.Add(´ ^ ´);
Sql.Add(´ COMMIT WORK ^ ´);
Sql.Add(´ ´);
Sql.Add(´ SET TERM ;^´);
ExecSql;
End;
Dr. Interbase
Curtidas 0
Respostas
Gandalf.nho
21/05/2005
Uma query comum não consegue processar esse tipo de script. Nesse caso, vc pode usar o componente IBScript da paleta IBX.
GOSTEI 0
Dr. Interbase
21/05/2005
Galera, já achei a resposta fiz pelo delphi 7 e criou a trigger
peguei na palheta do interbase o componente IBSQL, aquele que tem um raio amarelo
IBSQL1.sql.clear;
IBSQL1.sql.Add(´ CREATE TRIGGER ´CLIENTEATRIGGER´ FOR ´CLIENTES´´);
IBSQL1.sql.Add(´ ACTIVE BEFORE INSERT POSITION 0´);
IBSQL1.sql.Add(´ AS´);
IBSQL1.sql.Add(´ BEGIN´);
IBSQL1.sql.Add(´ NEW.CDCLIE = GEN_ID(GEN_CLIENTE,1);´);
IBSQL1.sql.Add(´ END´);
IBSQL1.ExecQuery;
ficou dez.
peguei na palheta do interbase o componente IBSQL, aquele que tem um raio amarelo
IBSQL1.sql.clear;
IBSQL1.sql.Add(´ CREATE TRIGGER ´CLIENTEATRIGGER´ FOR ´CLIENTES´´);
IBSQL1.sql.Add(´ ACTIVE BEFORE INSERT POSITION 0´);
IBSQL1.sql.Add(´ AS´);
IBSQL1.sql.Add(´ BEGIN´);
IBSQL1.sql.Add(´ NEW.CDCLIE = GEN_ID(GEN_CLIENTE,1);´);
IBSQL1.sql.Add(´ END´);
IBSQL1.ExecQuery;
ficou dez.
GOSTEI 0