MySQL 1443: что это значит? - PullRequest
       6

MySQL 1443: что это значит?

8 голосов
/ 04 августа 2009

Я пытаюсь сделать обновление в MySQL 5.0 вида:

update mytable.myfield t
set f = 'blah'
where t.id in (select v.id from myview v where ...);

MySQL говорит мне:

ErrorNr. 1443
The definition of table 'v' prevents operation UPDATE on table 't'.

Документация MySQL перечисляет эту ошибку, но (как обычно) не говорит, что это значит. Кто-нибудь может пролить свет на это для меня? Я ссылаюсь только на представление в подзапросе, и я ссылаюсь только на таблицу в основном запросе, и я не знаю, почему это помешает обновлению. Единственное, что я обнаружил в Google, - это ошибка в базе данных MySQL, связанная с триггерами, но (AFAIK) в моей базе нет триггеров.

1 Ответ

12 голосов
/ 04 августа 2009

Я думаю, что представление myview должно основываться на таблице mytable , чтобы при изменении значения на myfield оно теряло то, что находится в просмотреть и, следовательно, делает для незаконного обновления.

Я бы порекомендовал взглянуть на определение myview, чтобы вы могли написать свой запрос, не ссылаясь на него. Тогда вы сможете решить это.

Либо выведите список идентификаторов во временную таблицу и используйте его для своего подзапроса.

Rob

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...