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