Обновление MySQL View не удается, несмотря на возможность обновления

0

Эта проблема может быть ограничена только некоторыми версиями 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)

Это последний стабильный пакет mysql для ubuntu 16.04 во время публикации.

Может ли кто-нибудь сообщить мне, что может быть проблемой, то есть, почему это не позволит мне обновить строку для представления, которое должно быть обновляемым?

В соответствии с запросом. Определение определения (с помощью редакций):

    CREATE ALGORITHM=UNDEFINED DEFINER='root'@'localhost' VIEW 'view_company_users' AS select ....
    from (((('admin_users' 'au' 
    left join ... 
    left join ... 
    left join .....
    left join .....;
  • 2
    Вы должны включить определение вида, что вы показали нам, не является окончательным.
  • 0
    Подтвердили, что "LEFT JOINS" делают просмотры не обновляемыми. Когда представление повторно инициализируется с помощью INNER JOINS, операторы обновления не выдают ошибок. Это, однако, меняет природу представления, так что это очень плохой обходной путь.
Теги:
view

1 ответ

0

Решение здесь - либо использовать "INNER JOINS" вместо "LEFT JOINS", либо установить MariaDB, который, похоже, поддерживает это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню