MySQL5.7无法更新左连接视图的可更新部分

roqulrg3  于 2021-06-24  发布在  Mysql
关注(0)|答案(0)|浏览(143)

以下在MySQL5.6.40中适用,但在5.7.20中不适用:

create table test 
  select 1 as id, 'a' as data;

create or replace view v_test as 
  select t.* from test t
  left join test t1 using (id); -- doesn't have to be the same table, only used for simplicity

update v_test set data = 'b';

第1行出现错误1288(hy000):更新的目标表v\u test不可更新
左连接部分似乎是触发错误的原因。但是,更新是在连接的左侧完成的,因此不应该有任何理由拒绝它。此外,还开展了以下工作:

create or replace view v_test_ as 
  select t.* from test t
  join v_test using (id);

update v_test_
  set data = 'b';

这意味着mysql实际上可以使用左连接处理查询。拒绝更新是有很好的理由吗?还是一些文档的固执己见者仅仅因为左连接是“外部的”就为它们添加了一个例外?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题