oracle 更新,查询语句 与约束问题
2014-04-17 19:16
316 查看
SQL> select * from Pos;
PNO PNAME PDESCRIPE
---------- ---------- ------------------------------------------
2001 教师 负责教学科研工作
2004 保安 负责安全工作
2007 实验教师 负责实验室管理维护工作
2008 图书管理员 负责图书馆的管理
SQL> update Pos set Pno = '2009' where Pno = '2001';
update Pos set Pno = '2009' where Pno = '2001'
*
第 1 行出现错误:
ORA-02292: 违反完整约束条件 (SYS.SYS_C009913) - 已找到子记录
update 和where是怎样进行逻辑判断的?
难道可以理解成这样:where后面的条件就相当于if(Pno=2001)
然后是这样:if(Pno=2001){Pno=2009};这样看似乎是可以,并且逻辑上是合理的。
但是从select的角度看
如scott 表中, select * from emp where dept=10; 10号部分有的不止是一个人,查询的结果是显示很多条数据的。
如果where deptno =10理解成if(deptno=10) 那么语句只执行一次,结果也只能显示一组数据。
难道可以理解成
while(deptno=10),这样就可以循环的输出多条语句,上面 update Pos set Pno = '2009' where Pno = '2001';在执行该语句时,
如果一直循环的查Pno=2001,找到后就将Pno修改为2009,然后继续循环的查找,这时候查找条件已经变为Pno=2009,也就是set语句也执行了。
如果再继续执行下去
就变成了 update Pos set Pno = '2009' where Pno = '2009';,而set已经执行过了,逻辑好乱.....
PNO PNAME PDESCRIPE
---------- ---------- ------------------------------------------
2001 教师 负责教学科研工作
2004 保安 负责安全工作
2007 实验教师 负责实验室管理维护工作
2008 图书管理员 负责图书馆的管理
SQL> update Pos set Pno = '2009' where Pno = '2001';
update Pos set Pno = '2009' where Pno = '2001'
*
第 1 行出现错误:
ORA-02292: 违反完整约束条件 (SYS.SYS_C009913) - 已找到子记录
update 和where是怎样进行逻辑判断的?
难道可以理解成这样:where后面的条件就相当于if(Pno=2001)
然后是这样:if(Pno=2001){Pno=2009};这样看似乎是可以,并且逻辑上是合理的。
但是从select的角度看
如scott 表中, select * from emp where dept=10; 10号部分有的不止是一个人,查询的结果是显示很多条数据的。
如果where deptno =10理解成if(deptno=10) 那么语句只执行一次,结果也只能显示一组数据。
难道可以理解成
while(deptno=10),这样就可以循环的输出多条语句,上面 update Pos set Pno = '2009' where Pno = '2001';在执行该语句时,
如果一直循环的查Pno=2001,找到后就将Pno修改为2009,然后继续循环的查找,这时候查找条件已经变为Pno=2009,也就是set语句也执行了。
如果再继续执行下去
就变成了 update Pos set Pno = '2009' where Pno = '2009';,而set已经执行过了,逻辑好乱.....
相关文章推荐
- "执行SQL语句时出现问题操作必须使用一个可更新的查询"错误的解决方法
- ORACLE DBA查询 table function procedure 更新情况(限于DDL语句)
- 关于oracle sql语句查询时 表名和字段名要加双引號的问题具体解释
- ORACLE多表查询更新问题
- 关于oracle sql语句查询时 表名和字段名要加双引号的问题详解
- Oracle查询慢, 特别是更新慢问题
- 记录Oracle查询SQL语句(不定时更新)。
- oracle联合查询并更新一个表字段的sql语句
- 关于oracle sql语句查询时表名和字段名要加双引号的问题详解
- Oracle特殊查询更新语句
- 子查询 oracle输入 set语句 MERGE 事务 数据类型 约束 视图 外键
- Oracle sql语句查询日期字段没有时分秒问题
- oracle联合查询并更新一个表字段的sql语句
- Oracle 学习:约束、查询语句
- oracle下常用查询更新命令(身份证号判断男女,更新语句多表查询)
- oracle sql语句查询时 表名和字段名要加双引号的问题详解,oraclesql
- [置顶] MySQL与Oracle查询一条语句,如果有则更新,无则添加
- 使用plsql时查询Oracle语句中文无法匹配问题
- 执行SQL语句时出现问题操作必须使用一个可更新的查询错误的解决方法
- 开发过程中遇到的问题1--------我们的mysql的查询语句时自己写的,没有用oracle的nextvalue函数。所以这里涉及到了并发的问题。