5 资料维护与 View
View 元件除了提供比较方便的查询方式外,你也可以使用 View 元件来执行资料维护的工作。与 View 元件应用在查询资料时提供的方便性一样,不使用表格元件,而使用 View 元件来执行新增、修改或删除的工作,也可以增加资料维护的方便性。
要使用 View 元件来执行新增、修改或删除的工作,View 元件所包含的查询叙述必须符合下列的规则:
- 不可以包含计算或函式的字段
- 只允许一对一的结合查询
- View 元件的“ALGORITHM”不可以设定为“TEMPTABLE”
如果符合上列规定的 View 元件,就会称为“可修改的 View 元件、updattable views”。只有可修改的 View 元件,可以使用在“INSERT”、“UPDATE”或“UPDATE”叙述中执行资料维护的工作。
注:View 元件的“ALGORITHM”设定在这一章后面的“View 的算法”中讨论。
5.1 使用 View 元件执行资料维护
下列是一个可以执行资料维户的 View 元件,它的字段没有包含计算或函式,也没有使用结合查询:
如果要修改员工编号“7844”的佣金为 600 的话,你除了可以在“UPDATE”叙述中指定修改的表格名称为“emp”外,也可以在“UPDATE”叙述中指定 View 元件“EmpDept30View”:
在执行上列的“UPDATE”叙述以后,不论是查询 View 元件或表格,都可以确定资料已经修改了:
使用“INSERT”叙述新增纪录时,也可以指定 View 元件“EmpDept30View”:
在执行上列的“INSERT”叙述以后,查询 View 元件所得到的结果并没有刚才新增的员工资料,查询表格时才可以确定资料已经新增,这是因为新增纪录的部门编号字段资料为“NULL”的关系:
与“INSERT”和“UPDATE”叙述一样,“DELETE”叙述也可以指定 View 元件的纪录资料:
不过执行上列的删除叙述后,千万不要以为你已经删除员工编号“9001”的员工纪录了:
5.2 使用“WITH CHECK OPTION”
你可以使用 View 元件来执行资料维护的工作,可是在执行新增或修改的时候,又可能会造成一些有问题的资料。如果你不希望产生这类的问题,你可以为 View 元件加入“WITH CHECK OPTION”的设定:
加入“WITH CHECK OPTION”设定的 View 元件,在执行资料维护工作时,会先执行检查的工作,规则是一定要符合“View 元件中 WHERE 设定的条件”:
因为上列范例所新增的纪录资料,“deptno”字段会储存“NULL”值,这样就违反 View 元件中“WHERE deptno = 30”的条件设定了,所以在执行以后会产生错误讯息。下列的修改叙述就可以正确的执行:
View 元件中的“WITH CHECK OPTION”设定,还有额外的“CASCADE”和“LOCAL”两个控制检查范围的设定:
会有“CASCADE”和“LOCAL”这两个设定的原因,是因为 View 元件的资料来源可以一个表格,也可以是一个 View 元件:
查询“EmpDept20View”后,传回的纪录资料包含“deptno = 20”条件,与设定在“EmpSalaryView”的“salary >= 1500”条件:
检查范围设定为“LOCAL”的 View 元件,在执行资料维护的时候,只会检查是否符合自己的条件设定:
如果执行资料维护的叙述违反“EmpSalaryView”的条件设定,还是可以正确的执行:
如果你希望所有的 View 元件在执行资料维护的时候,都不可以出现这类的问题,就应该把 View 元件的检查范围设定为“CASCADE”:
检查范围设定为“CASCADE”的 View 元件,在执行资料维护的时候,就不能违反所有 VIew 元件的条件设定:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论