
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里面的数据,就一定要回到原来的表?????????????
谢谢 展开
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里面的数据,就一定要回到原来的表?????????????
谢谢 展开
6个回答
展开全部
结合2张表的view 无法update
如果想让view 可以更新,建view 语句需要满足以下条件
没有 表结合
没有 集合演算 如 UNION ALL / INTERSECT / MINUS
没有 GROUP BY
没有 集合函数
没有 DISTINCT
如果想让view 可以更新,建view 语句需要满足以下条件
没有 表结合
没有 集合演算 如 UNION ALL / INTERSECT / MINUS
没有 GROUP BY
没有 集合函数
没有 DISTINCT
本回答被提问者采纳

你对这个回答的评价是?
展开全部
多表view,更新有限制,这是mysql手册上的 内容:
在某些情况下,能够更新多表视图,假定它能使用MERGE算法进行处理。为此,视图必须使用内部联合(而不是外部联合或UNION)。此外,仅能更新视图定义中的单个表,因此,SET子句必须仅命名视图中某一表的列。即使从理论上讲也是可更新的,不允许使用UNION ALL的视图,这是因为,在实施中将使用临时表来处理它们。
在某些情况下,能够更新多表视图,假定它能使用MERGE算法进行处理。为此,视图必须使用内部联合(而不是外部联合或UNION)。此外,仅能更新视图定义中的单个表,因此,SET子句必须仅命名视图中某一表的列。即使从理论上讲也是可更新的,不允许使用UNION ALL的视图,这是因为,在实施中将使用临时表来处理它们。
参考资料: http://dev.mysql.com/doc/refman/5.1/zh/views.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的视图跨了多个表,所以不能更新了,试想一下,如果你能在这个视图上插入一条记录保存后,数据库如何知道记录实际上要被存进那个实体表中,因为视图本身并不是一个存储体。
所以只好在触发器中写两条update语句分别更新两个表了。
所以只好在触发器中写两条update语句分别更新两个表了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你的视图跨了多个表,所以只能用于查询,如果要删除的 你可以简称一个表的形式 create table test as (select * from test2)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接修改表里的数据,试图自然就可以更新了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |