存在外来码时的更新(上课笔记)
2009-09-17 22:10
141 查看
这学期选修了Oracle数据库,前面两节的课是对以前数据库概念的复习,发现自己学得真是不扎实,很多要点都忘了,在这里记录下,以后自己可以经常看看^_^
这次上课老师提到了关于存在外来码时的更新问题
有这样两张表
Dept
STUDENT
DNO是Dept的主码,是STUDENT的外来码
然后是三道思考题
1)Delete from dept where dname='Computer';
2)Update dept set dno='100' where dname='Computer';
3)Update student set dno='999' where sno='04109830'
上面这三种操作都会报错,都会破坏student表外来码的参照完整性
解决办法:
如第一题的意思是某学校的计算机系不再开设(悲剧啊),那在这之前先要把student表中这个系的学生都分配到其他院系当中去,然后才能执行delete
第二题是给计算机系重新编号的问题,可以在dept表中增加一个临时项,如“999”,把student表中原来计算机系的学生dno编号都改成“999”,然后再执行update操作,最后再把学生的dno编号改回来。
第三题就是一个计算机系学生转院系的问题,应该要现在dept表中确保有编号‘999’这个系后,再执行update操作。
这次上课老师提到了关于存在外来码时的更新问题
有这样两张表
Dept
DNO | DNAME | TEL | LOC |
001 | COMPUTER | 3421234 | X701 |
002 | COMM | 1234552 | X901 |
... | ... | ... | ... |
SNO | SNAME | AGE | SEX | DNO |
05001 | ZHANG | 19 | F | 001 |
05002 | LI | 20 | M | 002 |
... | ... | ... | ... | ... |
然后是三道思考题
1)Delete from dept where dname='Computer';
2)Update dept set dno='100' where dname='Computer';
3)Update student set dno='999' where sno='04109830'
上面这三种操作都会报错,都会破坏student表外来码的参照完整性
解决办法:
如第一题的意思是某学校的计算机系不再开设(悲剧啊),那在这之前先要把student表中这个系的学生都分配到其他院系当中去,然后才能执行delete
第二题是给计算机系重新编号的问题,可以在dept表中增加一个临时项,如“999”,把student表中原来计算机系的学生dno编号都改成“999”,然后再执行update操作,最后再把学生的dno编号改回来。
第三题就是一个计算机系学生转院系的问题,应该要现在dept表中确保有编号‘999’这个系后,再执行update操作。
相关文章推荐
- openerp学习笔记 视图更新时删除已存在的菜单或其他对象
- SQL笔记 [SQL判断是否存在] [长期更新] (-2015.4)
- 若干django使用的笔记,以后应该会继续更新吧...
- 【SQL Server】学习笔记2—插入数据、删除数据、更新数据
- Django后台开发笔记①:关于DjangoUeditor与python3存在兼容性问题的解决方案(即解决图片无法上传问题)
- SSIS处理导入数据时, 存在的更新, 不存在的插入
- 【CS229 Lecture notes,Machine Learning,Andrew Ng 】阅读笔记(持续更新中...)
- MongoDB学习笔记-创建、更新、删除文档
- C#觉得好玩的笔记(---将不断更新哦---)
- linux命令使用笔记_更新
- Ext使用笔记(不定期更新 2010-2-09)
- 【Git 学习笔记】2.2 - 记录每次更新到仓库
- R语言的学习笔记 (持续更新.....)
- Java 学习笔记(不断更新)
- ubuntu 命令 笔记 持续更新
- 面向对象程序设计-C++ Type conversion (Static) & Inheritance & Composition【第十二次上课笔记】
- solrCloud 索引更新逻辑学习笔记
- 数据库学习笔记和小练习(6)sql查询和更新练习
- 上课记录笔记 数据类型的转换
- 【转】Android笔记-ListView总结(多选框ListViiew,动态加载,多线程更新ListView中的进度条)