我想在专业表中major(mid,mname)中添加一个触发器,
当添加或修改时专业名称出现'aaa'时,将其改为'bbb'
我写的语句如下图:
这个触发器是可以创建成功,但是后面有出一些错误,
如下图:另外,我在用命令行执行oracle时,下面的语句根本就没反应
CREATE OR REPLACE TRIGGER  "MAJOR_T1" 
BEFORE
insert or update on "MAJOR"
for each row
begin
AS BEGIN 
IF (new.mname='cheng') 
THEN new.mname='new_name';
END IF;
END;求大神支招,只要给出的答案能运行,一定给分触发器oracletrigger

解决方案 »

  1.   

    SQL> create table test_trigger(id int,nn varchar2(50));表已创建。SQL> create or replace trigger my_trigger
      2  before insert or update
      3  on test_trigger
      4  for each row
      5  begin
      6  if :new.nn='aaa' then
      7  :new.nn:='bbb';
      8  end if;
      9  end;
     10  /触发器已创建SQL> set serveroutput on
    SQL> insert into test_trigger select 1,'aaaeee' from dual;已创建 1 行。SQL> insert into test_trigger select 1,'aaa' from dual;已创建 1 行。SQL> select * from test_trigger;        ID NN
    ---------- --------------------------------------------------
             1 aaaeee
             1 bbb
      

  2.   

    1楼 说出来了、new改为:new
      

  3.   


    万能的大神,成功啦,谢谢啦,前几天刚研究oracle,写触发器的时候,上面的例子是按资料书上格式写到,
    可是总是出错,
    在这里,运行了一切正常,看来资料书估计是过时了
    另外有两点疑问:
    1,怎么oracle中定义数值类型,我一直用的是number(),两者有什么区别吗
    2, if :new.nn='aaa' then
           :new.nn:='bbb';
        为什么后面的:new.nn要加上':'