mysql更新视图的限制
1、有些视图是不可更新的,因为这些视图的更新不能唯一有意义地转换为相应的基本表。
2、一般来说,可以更新行列子集视图。除列子集视图外,理论上还可以更新一些视图。
实例
--创建视图ldq_t1 CREATEVIEWldq_t1AS SELECT * FROM t3 WHEREid1>10WITHCHECKOPTION; --查询ldq_t1中的所有结果 SELECT*FROMldq_t1; --创建视图ldq_t2 CREATEVIEWldq_t2AS SELECT * FROM ldq_t1 WHEREid1<30WITHLOCALCHECKOPTION; --创建视图ldq_t3 CREATEVIEWldq_t3AS SELECT * FROM ldq_t1 WHEREid1<30WITHCHECKOPTION; --更新视图ldq_t2(只有ldq_t2中存在的数据都可以更新) SELECT*FROMldq_t2;--查看ldq_t2当前记录 UPDATEldq_t2SETid1=5WHEREid2=22;--可以执行成功 UPDATEldq_t2SETid1=35WHEREid2=22;--将会报错CHECKOPTIONfailed(因为执行该语句之后,id2=22记录将从ldq_t2消失) UPDATEldq_t2SETid1=28WHEREid2=22;--可以执行成功 --更新ldq_t3 SELECT*FROMldq_t3; UPDATEldq_t3SETid1=5WHEREid2=22;--将会报错CHECKOPTIONfailed(因为数据更新之后,必须还要保证其仍然在ldq_t3和ldq_t1之中,该语句执行后id2=22记录将从ldq_t1消失) UPDATEldq_t3SETid1=15WHEREid2=22;--能够执行成功 UPDATEldq_t3SETid1=35WHEREid2=22;--将会报错CHECKOPTIONfailed(因为执行该语句之后,id2=22记录将从ldq_t3消失) DELETEFROMldq_t3WHEREid2=22;--执行成功
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。