elsif deleting then
应该elseif吧

解决方案 »

  1.   

    不对,是elsif,好像缺了一个end if 吧
      

  2.   

    改成
    create or replace trigger single_trig
    before update or delete or insert on single_test
    for each row
    begin
       delete from single_test_bak where id ='2222';end;都出错
      

  3.   

    create or replace trigger single_trig
    before update or delete or insert on single_test
    for each row
    begin
    if inserting then
    null;
    elsif deleting then
       delete from single_test_bak where id = :old.id;
    else
    null;
    end if;//少了一个分号end;
      

  4.   

    delete from single_test_bak where id = :old.id;这句话根本没意义
      

  5.   

    为什么?那我该怎么改? 我只想要做个备用表,而且改称这样还出错
    delete from single_test_bak where id ='2222';
      

  6.   

    sorry,前面没看清你的题目。那句是有意义的。SQL817> SELECT * FROM TB;PJ   A    B    C
    ---- ---- ---- ----
    PJ1  a1   b1   c1
    PJ1  a2   b2   c2
    PJ1  a3   b3   c3已用时间:  00: 00: 00.21
    SQL817> SELECT * FROM TBBAK;PJ   A    B    C
    ---- ---- ---- ----
    PJ1  a1   b1   c1
    PJ1  a2   b2   c2
    PJ1  a3   b3   c3已用时间:  00: 00: 00.20
    SQL817> create or replace trigger tri before insert or update or delete on tb for each row
      2  begin
      3  if deleting then
      4     delete from tbbak where a=:old.a;
      5  end if;
      6  end tri;
      7  /触发器已创建已用时间:  00: 00: 00.60
    SQL817> DELETE TB WHERE A='a3';已删除 1 行。已用时间:  00: 00: 00.10
    SQL817> select * from tb;PJ   A    B    C
    ---- ---- ---- ----
    PJ1  a1   b1   c1
    PJ1  a2   b2   c2已用时间:  00: 00: 00.10
    SQL817> select * from tbbak;PJ   A    B    C
    ---- ---- ---- ----
    PJ1  a1   b1   c1
    PJ1  a2   b2   c2已用时间:  00: 00: 00.20
    SQL817> 你重新创建一次触发器,再执行delete,把详细的错误信息贴上来。
    是不是single_test或single_test_bak上还有其它触发器?
      

  7.   

    创建触发器后, 用show error 查看错误信息
      

  8.   

    drop trigger LINE_CHANGE_MA_t;create or replace trigger LINE_CHANGE_MA_t
     before insert on gsmram.LINE_CHANGE_MA
     for each row
     begin
     SELECT gsmram.LINE_CHANGE_MA_s.NEXTVAL INTO :NEW.line_Code from dual;
     end;
    依照以上做法可以再试试!