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, чтобы вы могли написать свой запрос без ссылки на него. Тогда вы сможете с этим разобраться.
альтернативно, сбросьте список идентификаторов во временную таблицу и используйте это для ваш подзапрос.
Роб