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

Previous  Top  Next

    
 

 

 

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

 

Code:

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 ;!!

 

 

 

Code:

DBase.StartTransaction;

try

Query.ExecSQL;

DBase.Commit;

except

DBase.Rollback;

raise;    // Для последующей обработки

end;

 

 

 

©Drkb::02706

       

Взято с http://delphiworld.narod.ru