mysql view 更新问题_mysql 视图实时更新是全表更新吗知乎-程序员宅基地

技术标签: 数据库  



       mysql的视图有三种类型:mergetemptableundefined。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。

算法会影响MySQL处理视图的方式。

1MERGE,会将引用视图的语句的文本与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分。

2TEMPTABLE,视图的结果将被置于临时表中,然后使用它执行语句。

3UNDEFINEDMySQL将选择所要使用的算法。如果可能,它倾向于MERGE而不是TEMPTABLE,这是因为MERGE通常更有效,而且如果使用了临时表,视图是不可更新的。

     明确选择TEMPTABLE1个原因在于,创建临时表之后、并在完成语句处理之前,能够释放基表上的锁定。与MERGE算法相比,锁定释放的速度更快,这样,使用视图的其他客户端不会被屏蔽过长时间。

 

(1) MERGE算法要求视图中的行和基表中的行具有一对一的关系。如果不具有该关系。必须使用临时表取而代之。如果视图包含下述结构中的任何一种,将失去一对一的关系:

· 聚合函数(SUM(), MIN(), MAX(), COUNT()等)。

· DISTINCT

· GROUP BY

· HAVING

· UNIONUNION ALL

· 仅引用文字值(在该情况下,没有基本表)。

 

(2) 某些视图是可更新的。也就是说,可以在诸如UPDATEDELETEINSERT等语句中使用它们,以更新基表的内容。对于可更新的视图,在视图中的行和基表中的行之间必须具有一对一的关系。还有一些特定的其他结构,这类结构会使得视图不可更新。更具体地讲,如果视图包含下述结构中的任何一种,那么它就是不可更新的:

· 聚合函数(SUM(), MIN(), MAX(), COUNT()等)。

· DISTINCT

· GROUP BY

· HAVING

· UNIONUNION ALL

· 位于选择列表中的子查询

· Join

· FROM子句中的不可更新视图

· WHERE子句中的子查询,引用FROM子句中的表。

· 仅引用文字值(在该情况下,没有要更新的基本表)。

· ALGORITHM = TEMPTABLE(使用临时表总会使视图成为不可更新的)。

(3)在某些情况下,能够更新多表视图,假定它能使用MERGE算法进行处理。为此,视图必须使用内部联合(而不是外部联合或UNION)。此外,仅能更新视图定义中的单个表,因此,SET子句必须仅命名视图中某一表的列。即使从理论上讲也是可更新的,不允许使用UNION ALL的视图,这是因为,在实施中将使用临时表来处理它们。

总结 :如果视图中包含 聚合函数(SUM(), MIN(), MAX(), COUNT()等)、GROUP BY、

HAVING 、UNIONUNION ALL 、FROM子句中的不可更新视图、WHERE子句中的子查询使用临时表的 都不能更新

 

( 欢迎大家批评指正)

 

 

      

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/z13615480737/article/details/69678154

智能推荐

IIS7应用程序池停止后,如何自动启动_iis 应用程序自动启动-程序员宅基地

文章浏览阅读1.6k次。我的环境:win2008R2 64位+IIS7.0从windows事件里找到错误原因:应用程序池“abc”将被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。这个应用程序池停止后,它就无法自动启动了,导致网站出现503错误网上搜索千篇一律的解决办法是:给IIS Admin Service添加NetWork Service用户权限(本地启动、本地激活)这种说法并不完..._iis 应用程序自动启动

Linux java jvm 启动默认内存最大值-Xmx调整为物理内存的80%脚本_eden space 1048576k, 100% used-程序员宅基地

文章浏览阅读6.2k次。java -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCTimeStamps -XX:-PrintCommandLineFlags -Xmx`free -m | grep Mem\: | awk '{print $2}' | xargs -i expr..._eden space 1048576k, 100% used

maven学习资源_maven推荐学习资源-程序员宅基地

文章浏览阅读222次。易百网http://www.yiibai.com/maven/---------------------------------------------------------【笔记】远程仓库在 pom.xml 文件这样: java.net https://maven.java.net/content/repositories/publ_maven推荐学习资源

机器学习大部分是用Python去实现,是否可以用Matlab去做机器学习呢?_机器学习只能用在python吗-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏6次。而matlab刚开始主要是为了数学计算开发的一门商用软件,但是随着他的功能的更新,matlab的功能不紧止步于数学计算中,开发了更多的功能,在计算、工程等领域有着强大的功能,深受研究者的热爱,但可惜它是商用的,不开源!在做机器学习的过程中,很大一部分人都是选择python来做,原因在于python的编程也简单,同时python提供了比较多的封装好的机器学习包,导入就可以直接用,方便实用。总之,matlab在做机器学习上的优势是有的,就是其是商用的,不开源的,进而更多的人选择python来做。..._机器学习只能用在python吗

cmake系列 - 解决__FILE__ 宏绝对路径的问题(相对路径)_cmake 修改 c语言__file__ 宏,不带目录-程序员宅基地

文章浏览阅读1w次,点赞10次,收藏30次。cmake 解决__FILE__ 宏绝对路径的问题-相对路径问题表现解决思路在cmake中优雅的解决重新编译总结其他问题表现通过cmake编译的代码,在代码中输出__FILE__就代码文件的绝对路径。在大多数使用__FILE__这宏的,一般都是用于日志输出,首先使用绝对路径会使日志量膨胀,其次我们最终的程序执行的环境,可能与编译的环境不一样,输出绝对路径并没有多大的参考意义//tests/t..._cmake 修改 c语言__file__ 宏,不带目录

VB.NET的拖放操作_vb.net form1.allowdrop-程序员宅基地

文章浏览阅读413次。如代码. 暂时还没改成类的写法.Public Class Form1 Private Sub Init_DragDrop() Me.AllowDrop = True AddHandler Me.DragEnter, AddressOf Obj_DragEnter AddHandler Me.DragDrop, AddressO_vb.net form1.allowdrop

随便推点

50M/s, Onedrive直链提取-IDM实现满速下载-程序员宅基地

文章浏览阅读4.8w次,点赞9次,收藏30次。50M/s, Onedrive直链提取+IDM实现满速下载博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议本文永久链接是:https://blog.nxingcloud.co/posts/a3ad802e.htmlOneDrive虽然嫖到了5T但是速度慢到极致是不是很不甘心,心里发痒?别急!OneDrive的真正实力远超你想象!今天,我就来教大家如何用oneindex+IDM让你的OneDrive下载速度爆表。话不多说,正文开整!!!国内网盘现状_onedrive直链

【ROS-数据格式理解】PointCloud2格式理解fields-程序员宅基地

文章浏览阅读1.4w次,点赞10次,收藏38次。【ROS-数据格式理解】PointCloud2格式理解 1、PointCloud2消息格式2、PointCloud2 消息格式例子3、理解其中的fields1、PointCloud2消息格式具体官方数据http://docs.ros.org/en/jade/api/sensor_msgs/html/msg/PointCloud2.html在ros中查看如下:std_msgs/Header header uint32 seq time stamp string frame_iduint3_pointcloud2

php 文章浏览数_重复计数,php+mysql文章浏览次数统计及发布时间-程序员宅基地

文章浏览阅读85次。session_start();$stsfile = "10001.php";$nowtime = time();date_default_timezone_set("Asia/Chongqing");//设置时间标准If (!isset($_SESSION['article']) || $_SESSION['article'] != $stsfile ) //判断用户是否在线{$link = m..._php+myqsl文章阅读量代码

图像噪声与去噪-程序员宅基地

文章浏览阅读3.4w次,点赞17次,收藏139次。图像的空域噪声以及二维降噪算法介绍1图像噪声的成因  图像在生成和传输过程中常常因受到各种噪声的干扰和影响而是图像降质,这对后续图像的处理和图像视觉效应将产生不利影响。噪声种类很多,比如:电噪声,机械噪声,信道噪声和其他噪声。因此,为了抑制噪声,改善图像质量,便于更高层次的处理,必须对图像进行去噪预处理。2图像噪声的特征  图像噪声使得图像模糊,甚至淹没图像特征_图像噪声与去噪

Python Web 之Flask基础(一)_python flask修改了视图函数的函数名-程序员宅基地

文章浏览阅读536次,点赞4次,收藏4次。文章目录Flask 框架基础Flask 搭建创建虚拟环境安装 Flask测试Flask 的基本使用路由视图函数请求与响应请求响应Flask 框架基础Flask 搭建Flask 1.0 文档依赖当安装 Flask 时,以下配套软件会被自动安装。Werkzeug 用于实现 WSGI ,应用和服务之间的标准 Python 接口。Jinja 用于渲染页面的模板语言。MarkupSaf..._python flask修改了视图函数的函数名

学习3d建模达到什么水平能找到工作?次世代游戏建模需要学多久_次时代建模几月找工作合适-程序员宅基地

文章浏览阅读844次。作为从业7年+的游戏建模工作者,我经历过这个圈子里几乎所有类型的挫折和崩溃,过快的技术更迭造成现在游戏美术圈一个普遍的问题:人才出现巨大断层,各高校游戏美术类相关专业应届毕业生基本达不到同时期入行的最低需求,学生们发现自己刚毕业就失业了,这就是为什么你的老师告诉你们毕业也找不到工作的原因。3d建模学多久这个问题不是很好回答,谁才知道你的实力怎么样,努力的态度怎么样,如果你三天打鱼两天晒网,我估计一万年也学不会。如果你全力以赴认真的学,五六个月就能很好的玩转3D建模,当然如果你想达到大神级别的水平,还得在有_次时代建模几月找工作合适