Как сделать откат (rollback) внутри триггера?

 Внутри триггера нельзя управлять транзакциями, поэтому генерируешь там
исключение а откат транзакции делаешь в приложении, пославшем запрос.
Естественно exception должен предварительно создан


SET TERM !! ;

CREATE TRIGGER "DELETE_INV" FOR "TINV"
    ACTIVE BEFORE DELETE
    POSITION 10
    AS
    BEGIN

        IF (EXISTS (SELECT tOst.Id FROM tOst
                    WHERE tOst.Id = tInv.Id))
        THEN
            EXCEPTION EST_OSTATOK;

    END !!

SET TERM ;!!

DBase.StartTransaction;
try
  Query.ExecSQL;
  DBase.Commit;
except
  DBase.Rollback;
  raise;    // Для последующей обработки
end;        

TopList Rambler's Top100