问答详情
源自:2-1 [Oracle] 触发器应用一

为什么我的触发器不能创建成功?

create or replace trigger securitytest

before insert

on test

begin

   if to_char(sysdate,'day') in ('saturday','sunday') or

      to_number(to_char(sysdate,'hh24')) not between 9 and 18 then

      raise_application_error(-200001,'cannot insert in woking time');

   end if

end;


提问者:慕粉3344523 2016-06-25 17:14

个回答

  • inverted_demon
    2016-07-01 14:25:41
    已采纳

    test是你自己创建的表吗??oracle提示的错误信息是什么?

  • qq_可笑又真实的梦想_0
    2016-09-25 14:39:46

    百度一下

  • qq_骑着蜗牛去旅行_03471935
    2016-07-06 15:02:48

    1,首先你先用这个查一下:select  to_char(sysdate,'day') from dual;,看看结果是英文还是汉字,如果是汉字,就把: ('saturday','sunday') 改为: ('星期六','星期日')  

    2,raise_application_error(-200001,'cannot insert in woking time');  这里的错误号参数的范围是-20000 到 -20999  你这里的-200001不在这个范围内

  • inverted_demon
    2016-07-01 14:34:04

    还有一个:是-20001,不是-200001

  • 慕粉3344523
    2016-06-28 21:15:35

    create or replace trigger securitytest

    before insert

    on test

    begin

       if to_char(sysdate,'day') in ('saturday','sunday') or

          to_number(to_char(sysdate,'hh24')) not between 9 and 18 then

          raise_application_error(-200001,'cannot insert in woking time');

       end if

    end;

     我改成上面的方式也不行呀

  • 水利万物
    2016-06-27 22:24:09

    你的不是汉语星期六和星期日所以没有进if判断