トリガーの本体でトランザクション管理ステートメント (COMMIT や ROLLBACK など) が使用されていることを報告します。

トリガーの本体に COMMIT または ROLLBACK ステートメントがある場合、トリガーはコンパイルされません。 トリガーがトランザクションの最中に起動するため、エラーが発生します。 トリガーが起動する時点では、現在のトランザクションは完了していません。 COMMIT はトランザクションを終了させるため、両方のステートメント (COMMIT と ROLLBACK) は例外を引き起こします。 トリガー内で実行される変更は、トリガーを起動させた側のトランザクションによりコミット (またはロールバック) される必要があります。

例 (Oracle):

CREATE TABLE employee_audit
(
    id          INT  NOT NULL,
    update_date DATE NOT NULL,
    old_name    VARCHAR2(100),
    new_name    VARCHAR2(100)
);

CREATE TABLE employees
(
    id   INT           NOT NULL,
    name VARCHAR2(100) NOT NULL
);

CREATE OR REPLACE TRIGGER trig_commit
    AFTER UPDATE OF name
    ON employees
    FOR EACH ROW
BEGIN
    INSERT INTO employee_audit VALUES (:old.id, SYSDATE, :old.name, :new.name);
    COMMIT;
END;

CREATE OR REPLACE TRIGGER trig_rollback
    AFTER UPDATE OF name
    ON employees
    FOR EACH ROW
BEGIN
    INSERT INTO employee_audit VALUES (:old.id, SYSDATE, :old.name, :new.name);
    ROLLBACK;
END;