create or replace trigger no_time_newdate before insert on unifier_uxqa0401
begin
if to_char(sysdate,'day') in('saturday','sunday') or to_number(to_char(sysdate,'hh24')) not between 9 and 18
--禁止insert
raise_application_error(-20001,'非工作时间禁止写入');
end if;
end ;
我是这样写的,亲测有效
to_char(sysdate,'day')是输出的中文星期一,星期二,你触发的却是saturday'
,
'sunday'
,
'friday,应该改为星期一,星期日,星期五
你可以对触发器做一下操作
--禁用某个表上的所有触发器
ALTER TABLE 表 DISABLE TRIGGER all
--启用某个表上的所有触发器
ALTER TABLE 表 enable TRIGGER all
--禁用所有表上的所有触发器
exec sp_msforeachtable 'ALTER TABLE DISABLE TRIGGER all'
没怎么看明白你的问题,你的触发器是在插入操作之前,然后你查询了一个当天的日期,我按照你的试了一下没有问题,是不是你没有打开输出开关?
使用show error查看下
if判断,在编程语言和前段代码中实现,这是我理解的。仅供参考!!!
好多公司还是要用的
工作时间内可成功插入数据;非工作时间插入,触发器将被触发而报错。
test是你自己创建的表吗??oracle提示的错误信息是什么?
如果在命令行下,需要在结尾加:/