student表:
95001 李勇 男 20 CS
95002 刘晨 女 21 IS
95003 王敏 女 18 MA
95004 张力 男 19 IS
建立视图IS_STUDENT显示“IS”系所有学生的学号、姓名、性别。
create view IS_STUDENT
as
select Sno,Sname,Ssex
from Student
where Sdept='IS'
with check option;用insert语句向视图中插入元组('95009','王五','男'),查看基本表student表中插入的数据值。问题::当没有加上with check option 的时候,可以成功插入,切插入到基本表的年龄和专业都是null。
当加上with check ooption 的时候,就插入失败了,这是怎么回事?麻烦详解一下下面是失败的消息:
消息 550,级别 16,状态 1,第 1 行
试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。
语句已终止
95001 李勇 男 20 CS
95002 刘晨 女 21 IS
95003 王敏 女 18 MA
95004 张力 男 19 IS
建立视图IS_STUDENT显示“IS”系所有学生的学号、姓名、性别。
create view IS_STUDENT
as
select Sno,Sname,Ssex
from Student
where Sdept='IS'
with check option;用insert语句向视图中插入元组('95009','王五','男'),查看基本表student表中插入的数据值。问题::当没有加上with check option 的时候,可以成功插入,切插入到基本表的年龄和专业都是null。
当加上with check ooption 的时候,就插入失败了,这是怎么回事?麻烦详解一下下面是失败的消息:
消息 550,级别 16,状态 1,第 1 行
试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。
语句已终止
这个我看过了‘CHECK OPTION 子句强制所有数据修改语句均根据视图执行,以符合定义视图的 SELECT 语句中所设的条件。’这是什么意思,还有就是我的视图里面都是IS的学生 ,插入的时候要怎么办,要说明也是IS的学生吗?
首先视图只操作它可以查询出来的数据,对于它查询不出的数据,即使基表有,也不可以通过视图来操作。
1.对于update,有with check option,要保证update后,数据要被视图查询出来
2.对于delete,有无with check option都一样
4.对于insert,有with check option,要保证insert后,数据要被视图查询出来
对于没有where 子句的视图,使用with check option是多余的
还是不行的,但是我把Student的Sdept的默认值改成了IS后直接这样写就插进去了
insert
into IS_STUDENT1
values('95009','王五','男')
总之还是迷迷糊糊的啊~~~~(>_<)~~~~
插入后的数据,通过视图能够查询出来就符合WITH CHECK OPTION
否则就不符合
用insert语句向视图中插入元组('95009','王五','男'),查看基本表student表中插入的数据值。
这个是原来的问题