尽管可以更新,但更新MySQL视图失败

时间:2018-02-20 06:41:16

标签: mysql view

此问题可能仅限于某些版本的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 .....;

1 个答案:

答案 0 :(得分:0)

这里的解决方案是使用'INNER JOINS'而不是'LEFT JOINS',或安装似乎支持此功能的MariaDB。