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

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

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

{/codecitation}

Добавить комментарий