我定义了一个触发器trg_myemp,禁止在工作时间(9点到17点)修改表信息,但是为什么还是能删除表中的行
或者插入新的行都可以啊?(我操作是在9点到17点进行的,系统时间也没错)
后来我把between 改成 not between就可以了,感觉不符合逻辑啊,有大神可以解释一下吗?
下面是代码:
CREATE OR REPLACE TRIGGER trg_emp
BEFORE INSERT OR UPDATE OR DELETE ON emp
BEGIN
IF(TO_CHAR(SYSDATE, 'HH24')) BETWEEN '9' AND '17' THEN
RAISE_APPLICATION_ERROR(-20000, '在工作时间不能改变表信息');
END IF;
END trg_emp;
/DELETE FORM emp WHERE ename='SMITH';INSERT INTO myemp(empno,ename,job,mgr,sal,comm,deptno)values(8881,'xzh2','salesman',7698,1600.00,100.00,30);触发器
或者插入新的行都可以啊?(我操作是在9点到17点进行的,系统时间也没错)
后来我把between 改成 not between就可以了,感觉不符合逻辑啊,有大神可以解释一下吗?
下面是代码:
CREATE OR REPLACE TRIGGER trg_emp
BEFORE INSERT OR UPDATE OR DELETE ON emp
BEGIN
IF(TO_CHAR(SYSDATE, 'HH24')) BETWEEN '9' AND '17' THEN
RAISE_APPLICATION_ERROR(-20000, '在工作时间不能改变表信息');
END IF;
END trg_emp;
/DELETE FORM emp WHERE ename='SMITH';INSERT INTO myemp(empno,ename,job,mgr,sal,comm,deptno)values(8881,'xzh2','salesman',7698,1600.00,100.00,30);触发器
解决方案 »
- 各位大哥,帮我看一下这个sql语句
- imp导入命令
- ORACLE 如何获取当前时间的上一天的日期?
- 同一张表查询每个相同STATION_CODE最大STATION_NUM的记录集
- 高分-请高手指点:如何动态检测远程数据库是否连接问题(急!急!急!)
- 子查询的一个问题
- 各位大哥,这个视图应该怎么建???????????????
- 下列触发器出现错误“行号= 3 列号= 6 错误文本= PLS-00103: 出现“DROP”需要在下列之一时:。。。。”这样的错误?请问怎样修改?
- oracle8i目录服务问题!(在线等!)
- 统计连续次数sql怎么写?谢谢各位大哥啦!
- 查询语句出现重复的数据
- 怎么深入学习oracle
和
between 9 and 17
不是一回事
extract(hour from cast(sysdate as timestamp)) between 9 and 17
而3楼的方法就可以
可是字符串between '9' and '17' 是不可能出结果的,因为字符串‘17’<'9'
因为字符串的排序时‘1’ ‘17’ ‘2’ ‘234’ ‘9’ 这种的
to_number(TO_CHAR(SYSDATE, 'HH24')) between 9 and 17