此问题可能仅限于某些版本的Mysql。
从控制台我知道视图是可更新的:
mysql> select IS_UPDATABLE from INFORMATION_SCHEMA.VIEWS where TABLE_NAME = 'view_company_users';
+--------------+
| IS_UPDATABLE |
+--------------+
| YES |
+--------------+
1 row in set (0.00 sec)
mysql> UPDATE view_company_users SET company_public_phone = '0407111124' WHERE id=511;
ERROR 1288 (HY000): The target table view_company_users of the UPDATE is not updatable
我从另一台没有问题的服务器导入数据库,所以它必须是我的服务器设置所特有的(5.7.21-0ubuntu0.16.04.1)
这是发布时ubuntu 16.04的最新稳定mysql包。
任何人都可以告诉我这个问题可能是什么,也就是说,为什么它不允许我为一个可以更新的视图更新一行?
根据要求,视图定义(带有修订):
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` VIEW `view_company_users` AS select ....
from ((((`admin_users` `au`
left join ...
left join ...
left join .....
left join .....;
答案 0 :(得分:0)
这里的解决方案是使用'INNER JOINS'而不是'LEFT JOINS',或安装似乎支持此功能的MariaDB。