以下在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实际上可以使用左连接处理查询。拒绝更新是有很好的理由吗?还是一些文档的固执己见者仅仅因为左连接是“外部的”就为它们添加了一个例外?
暂无答案!
目前还没有任何答案,快来回答吧!