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

Я пытаюсь сделать обновление, в 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 bug db, связанная с триггерами, но (AFAIK) в моей БД нет триггеров.

1 ответов


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

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

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

Роб