我用记事本写了一个触发器,可是不知道在哪执行啊?SQL PLUS里面执行不了啊?真麻烦
求大家帮忙!
我机器上装的是ORACLE 9I服务器版

解决方案 »

  1.   

    触发器 
    是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。 
    触发语句 
    比如: 
    表或视图上的DML语句 
    DDL语句 
    数据库关闭或启动,startup shutdown 等等 
    before insert or update 
                  of department_id 
                  on employees 
           referencing old as old_value 
                           new as new_value 
           for each row 
    说明: 
    1、 无论是否规定了department_id ,对employees表进行insert的时候 
    2、 对employees表的department_id列进行update的时候 
    3、 触发器限制 
    when (new_value.department_id<>80 ) 
    限制不是必须的。此例表示如果列department_id不等于80的时候,触发器就会执行。 
    其中的new_value是代表更新之后的值。 
    4、 触发操作 
    是触发器的主体 
    begin 
           :new_value.commission_pct :=0; 
    end; 
    主体很简单,就是将更新后的commission_pct列置为0 
    触发: 
    insert into employees(employee_id, 
    last_name,first_name,hire_date,job_id,email,department_id,salary,commission_pct ) 
    values( 12345,’Chen’,’Donny’, sysdate, 12, ‘[email protected]’,60,10000,.25); 
    select commission_pct from employees where employee_id=12345; 
    触发器不会通知用户,便改变了用户的输入值。 
    触发器类型: 
    1、 语句触发器 
    2、 行触发器 
    3、 INSTEAD OF 触发器 
    4、 系统条件触发器 
    5、 用户事件触发器 
      

  2.   

    谢谢楼上,但是您没看明白我的意思:我的触发器代码已经写好了,但是我不知道在哪执行,也就是说我不知道在哪建立触发器,比如说:在SQL SERVER中,把建立触发器的代码写在查询分析器中一执行,就行了,触发器就建立了,可是,ORACLE中在哪执行建立触发器的代码?
      

  3.   

    sql*plus中执行,如果不能执行,说明你没有写对或者没有连接到数据库。
      

  4.   

    sql*plus中执行,如果不能执行,说明你没有写对或者没有连接到数据库。 -------------------------
    可是,我在SQL PLUS中执行时,正常情况下是SQL语句后加“;”号再加回车即可执行啊,可是我现在怎么加分号和回车,光标都移向下一行,行号在增加,语句行不到执行啊
      

  5.   

    在建立触发器时,无论我在SQL PLUS中输入的是什么字符,光标都移向下一行,并不是执行的状态,如果不是建立触发器,而是建表啊序列什么的,就不会有这种情况
      

  6.   

    而且这时想退出光标重写都不行,只得把SQL PLUS关掉再打开
      

  7.   

    sql plus 中应该可以运行的。
      

  8.   

    SQL*PLUS worksheet不是更好么?