ora-01407 错误
场景再现:
SCOTT,EMP 表为例
create table emp1 as select * from emp where deptno=30;
update emp1 set sal=1;
commit;
假设我想把工资,按照EMP1 中的工资,更新到EMP中
很自然的想到,update emp set sal=(select sal from emp1 where emp.empno=emp1.empno);
杂一看,语句没有什么问题,(在生产环境上因为有NOT NULL 约束,万幸没更新上去,不然要恢复了)
回去仔细想了想也没什么不对,
第二天接着测试,无意中,看到。。。。更新之后的表。。天啊。。。其它全改成NULL 了!
仔细一分析上面语句 update ,set ...少where 条件。。。弱智啊。。
问题重现
alter table emp modify (sal not null);
update emp set sal=(select sal from emp1 where emp.empno=emp1.empno);
SQL 错误: ORA-01407: 无法更新 ("SCOTT"."EMP1"."SAL") 为 NULL
01407. 00000 - "cannot update (%s) to NULL"
*Cause:
*Action:
错误如期而至
现在一看,报错很明显了。
感谢您的阅读,您的支持是我写博客动力。

浙公网安备 33010602011771号