with check option(视图 )
建立视图的时候使用WITH CHECK OPTION 与不使用的区别
WITH CHECK OPTION | |||
insert | update | delete | |
使用with check option | 保证insert后,数据要被视图查询出来 | 保证update后,数据要被视图查询出来 | 无要求 |
未使用with check option | 无要求 | 无要求 |
无要求
|
--========================================建立测试表TAB --DROP TABLE TAB CREATE TABLE TAB ( ID INT, NAME VARCHAR(10), LOC VARCHAR(100) ) ---=======================================插入业务数据测试 INSERT INTO TAB SELECT 1,'JACK','ChangSha' UNION ALL SELECT 2,'TOM','ShangHai' UNION ALL SELECT 3,'JACK','Kunming' UNION ALL SELECT 4,'JACK','Hubei' --===================================建立视图 --1.含有WITH CHECK OPTION的 --DROP VIEW V_WCO GO CREATE VIEW V_WCO AS SELECT * FROM TAB WHERE NAME='TOM' WITH CHECK OPTION; --2.不含有WITH CHECK OPTION的 --DROP VIEW V_WCO_2 CREATE VIEW V_WCO_2 AS SELECT * FROM TAB WHERE NAME='TOM' --================更新视图============-- --###########===INSERT===############-- --INSERT 视图查询结果集中不包含的记录 Insert into V_WCO SELECT 5,'JACK','QuJin' --INSERT 视图查询结果集中包含的记录 insert into V_WCO SELECT 5,'TOM','QuJin' /* 消息 550,级别 16,状态 1,第 1 行 试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了 WITH CHECK OPTION,而该操作的一个或多个结果行又不符合 CHECK OPTION 约束。 语句已终止。 */ --###########===DELETE===############-- delete from V_WCO where ID=1 /* (0 行受影响) */ --###########===UPDATE===############-- ---update V_WCO update V_WCO set NAME='已更新' WHERE ID=1 --(0 行受影响) update V_WCO set NAME='已更新' WHERE ID=2 --(1 行受影响)
作者:奔跑的金鱼
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!