我知道,当修改一个表结构时,可以触发一个事件,去做其它的操作,就是DDL触发器!
但我现在的问题是,我在DML触发器里,要做DDL操作

解决方案 »

  1.   

    触发器本身就带有事务,执行失败自动回滚如果要在触发器中执行DDL操作,可以启用自治的事务.CREATE TRIGGER bonus_trig
    AFTER UPDATE ON bonus
    DECLARE
    -- enables trigger to perform DDL
    PRAGMA AUTONOMOUS_TRANSACTION; BEGIN 
     EXECUTE IMMEDIATE ’DROP TABLE temp_bonus’;
    END;
      

  2.   

    楼上说的好 :)触发器整体就是一个事务来的,由 Oracle 控制.
    但设置了 PRAGMA AUTONOMOUS_TRANSACTION 之后,触发器的事务就是由自己控制,可以自由 rollback/commit/alter table... 等等之类的操作