MYSQL语句,union生成一个表无法update,求高手帮忙,谢谢

1.createviewtestas(语句一)union(语句而),这个时候view无法updateThetargettabletestoftheUPDATEisnotu... 1.create view test as (语句一) union (语句而),这个时候view无法update
The target table test of the UPDATE is not updatable
2.但是 create view1 test as (语句一)时候,view1可以update,
3.create view test2 as (语句二)时候,view2也可以Update

所以基本确定是这个union的问题,求高手指出问题,以及解决办法。。。
需要把两个表联合成一个表并用触发器update。。。但是Union后死活update不了。。
谢谢楼下的回答,但是我的union又不是union all,所以根本不会有重复的语句。。。。
union成一个视图是必须的了(用作一个用户表),但是,莫非如果我想要update里面的数据,就一定要回到原来的表?????????????
谢谢
展开
 我来答
shinkensj
推荐于2017-11-23 · TA获得超过319个赞
知道答主
回答量:100
采纳率:0%
帮助的人:0
展开全部
结合2张表的view 无法update

如果想让view 可以更新,建view 语句需要满足以下条件

没有 表结合
没有 集合演算 如 UNION ALL / INTERSECT / MINUS
没有 GROUP BY
没有 集合函数
没有 DISTINCT
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5294d5457
2010-04-14 · 超过33用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:110万
展开全部
多表view,更新有限制,这是mysql手册上的 内容:

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

参考资料: http://dev.mysql.com/doc/refman/5.1/zh/views.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
howlshadow
2010-04-14 · TA获得超过1381个赞
知道小有建树答主
回答量:1171
采纳率:100%
帮助的人:957万
展开全部
因为你的视图跨了多个表,所以不能更新了,试想一下,如果你能在这个视图上插入一条记录保存后,数据库如何知道记录实际上要被存进那个实体表中,因为视图本身并不是一个存储体。

所以只好在触发器中写两条update语句分别更新两个表了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
曾煜黎cf787
2010-04-14 · TA获得超过528个赞
知道小有建树答主
回答量:560
采纳率:100%
帮助的人:0
展开全部
因为你的视图跨了多个表,所以只能用于查询,如果要删除的 你可以简称一个表的形式 create table test as (select * from test2)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
FML扯淡cfdc1d
2019-03-18
知道答主
回答量:16
采纳率:0%
帮助的人:3.4万
展开全部
直接修改表里的数据,试图自然就可以更新了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式