sql2005 with check option 这样使用,还是可以插入,修改,????

select*fromstu8select*fromstu8_view2select*fromstu8_view3createviewstu8_view2asselect... select * from stu8
select * from stu8_view2
select * from stu8_view3
create view stu8_view2 as select * from stu8 where s#>10
create view stu8_view3 as select * from stu8 where s#>10
with check option
---
exec sP_help stu8_view2
insert into stu8_view2 values ('李毅','2000-1-1','男',20 ) -----t stu8_view2 stu8 插入均正确
insert into stu8_view3 values ('李虎','2001-1-1','男',21 ) -----t stu8_view3 stu8 插入均正确
update stu8_view2 set sname ='孙豹' where s#=11 ----t stu8_view2 stu8 修改均正确
update stu8_view3 set sname ='张菊' where s#=12 ----t stu8_view2 stu8 修改均正确
展开
 我来答
匿名用户
2014-09-03
展开全部

WITH CHECK OPTION

 

是  约束可更新视图  的用法。

 

也就是  向一个 视图  里面的表,  插入/更新数据的时候,  要满足一定的条件。

 

例如:

1> CREATE VIEW
2>   v_sale_report_x
3> AS
4>   SELECT
5>     *
6>   FROM
7>     sale_report
8>   WHERE
9>     sale_item = 'X'
10> WITH CHECK OPTION;
11> go

-- 上面创建一个  约束可更新视图。  

  
-- 下面尝试  插入一行  满足 约束条件的数据。

   
1> INSERT INTO v_sale_report_x (
2>   sale_date, sale_item, sale_money
3> ) VALUES (
4>    CONVERT(DATETIME, '2012-02-02 01:00:00', 120), 'X', 1
5> );
6> go
(1 行受影响)


-- 下面尝试  插入一行  不满足 约束条件的数据, 结果将报错。
  
   
1> INSERT INTO v_sale_report_x (
2>   sale_date, sale_item, sale_money
3> ) VALUES (
4>    CONVERT(DATETIME, '2012-02-02 01:00:00', 120), 'Y', 1
5> );
6> go
消息 550,级别 16,状态 1,服务器 HOME-BED592453C\SQLEXPRESS,第 1 行
试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WIT
H CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。
语句已终止。
1>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式