БОЛЬШОЙ FAQ ПО DELPHI



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

Внутри триггера нельзя управлять транзакциями, поэтому генерируешь там исключение а откат транзакции делаешь в приложении, пославшем запрос. Естественно 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;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ