今天小弟练习写了个触发器,
create or replace trigger tt
  before update of yuwen on xueji   
declare
  aa number;
begin
    aa = new.yuwen - old.yuwen
    dbms_output.put_line('OK'a);  
end tt;
直接报了说,不能在SYS下创建出发器,可是我用的是scott用户登陆的呀,怎么报了这个错,我很费解。。
各位高手,谁给说下

解决方案 »

  1.   


    create or replace trigger tt
    before update of yuwen on xueji 
    declare
    aa number;
    begin
    aa = :new.yuwen - :old.yuwen ; --分号结束,且关键字new和old前要加冒号(:)
    dbms_output.put_line('OK'||aa); 
    end tt;
      

  2.   


    create or replace trigger tt
      before update of yuwen on xueji
      for each row ------这个少了
    declare
      aa number;
    begin
      aa = :new.yuwen - :old.yuwen; ----new 和old前必须写冒号,代表共享变量。结尾少了分号。
      dbms_output.put_line('OK' || a); ---少了连接符
    end tt;
      

  3.   

    sys用户下对象是不允许创建trigger的.
    你是不是用sysdba身份登录的本地数据库?这时候会用os验证以sys登录,而不是你想登陆的scott.
    你可以在command windows 下输入 show user来确认当前登录的用户
      

  4.   

    create or replace trigger tt before update of yuwen on xueji for each row --这里
    declare
    aa number;
    begin
    aa =:new.yuwen -:old.yuwen;    --这里
    dbms_output.put_line('OK '||aa); 
    end tt;
      

  5.   

    谢谢minitoy,我用的是sysDBA 身份,呵呵,看到要换一人登录了,也谢谢上面两位朋友,呵呵,都给大家分