触发自主交易

时间:2015-05-24 22:42:06

标签: sql oracle plsql triggers transactions

我想知道声明AUTONOMOUS_TRANSACTION是否意味着规则操作在事件事务INSERT on tab结束后开始(AKA触发事务成功COMMIT)。

我正在使用Oracle DB 11.2

这里我添加了触发器:

CREATE OR REPLACE TRIGGER rule1
AFTER INSERT ON tab
FOR EACH ROW
DECLARE
    PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    EXECUTE IMMEDIATE ('
            ALTER TABLE vert_strukt
            ADD '||:NEW.name||' VARCHAR2(40) ');
    INSERT INTO resulted (name_unique)
    VALUES (:NEW.name);
    COMMIT;
END;

1 个答案:

答案 0 :(得分:0)

我建议您使用存储过程来执行此操作。此外,触发器中不允许任何事务控制语句。 ROLLBACK COMMIT SAVEPOINT 无法使用。