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