create or replace trigger ...
before insert --Oracle里支持before关键字
is
...

解决方案 »

  1.   

    instead of触发器只有在对视图进行更新时才会触发INSTEAD OF triggers provide a transparent way of modifying views that cannot be modified directly through DML statements (INSERT, UPDATE, and DELETE). These triggers are called INSTEAD OF triggers because, unlike other types of triggers, Oracle fires the trigger instead of executing the triggering statement.You can write normal INSERT, UPDATE, and DELETE statements against the view and the INSTEAD OF trigger is fired to update the underlying tables appropriately. INSTEAD OF triggers are activated for each row of the view that gets modified.
      

  2.   

    To : libin_ftsafe(子陌红尘) 
    大哥,我知道Oracle里支持before关键字,就是说在insert语句插入表前就执行触发器,
    但好像和我的问题没什么联系吧???能否详细解释一下,???具体该怎么做呢??
      

  3.   

    oracle 不可以实现 sqlserver的 instead of 触发器 功能吗?
      

  4.   

    to 楼上:我知道oracle 可以实现 instead of 触发器,
    我想问的是:oracle 不可以实现 sqlserver的 instead of 触发器 功能吗?
      

  5.   

    CREATE OR REPLACE TRIGGER TRIGGER_NAME
    BEFORE INSERT 
    ON U_TABLE
    FOR EACH ROW
    BEGIN
       BEGIN   
           執行語句動作;
           COMMIT;
       END;
       在這可以寫一產生异常語句,使table插入语句不执行.
    END;
      

  6.   

    to 楼上:写什么语句可以实现 table插入语句不执行 呢  ?别走啊,大哥?
      

  7.   

    CREATE OR REPLACE TRIGGER TRIGGER_NAME
    BEFORE INSERT 
    ON U_TABLE
    FOR EACH ROW
    BEGIN
       BEGIN   
         :New.sID := '1234';--来更改sID的插入值为1234
          
       END;
       在這可以寫一產生异常語句,使table插入语句不执行.
    END; Oracle触发器不能使用事务控制语句,包括COMMIT、ROLLBACK或SAVEPOINT。
     当声明触发器的表中有外键约束时,如果将定义触发器的表和需要作为DELETE CASCADE参考完整性限制的结果进行更新的表称为变化表,则在此触发器主体中的SQL语句不允许读取或修改触发语句的任何变化表。
      

  8.   

    raise_application_error(-20001, '');raise一个错误可以禁止更新.
      

  9.   

    那就在BEFOR INSERT 触发器用判断条件+
    raise_application_error(-20001, 'bu cha ru!');来实现好了。
    这里的-20001可以为-20001~-20999中任意值。属于用户自定义报错的SQLCODE。