mysql 5.7无法更新左联接视图的可更新部分

时间:2018-06-25 20:44:43

标签: mysql sql-update left-join sql-view mysql-5.7

以下内容适用于Mysql 5.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):UPDATE的目标表v_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实际上可以使用左连接来处理查询。是否有充分的理由拒绝更新,或者是文档的顽固支持者只是因为左联接是“外部”而添加了例外?

0 个答案:

没有答案