LIME пишет:потому что в мускуле вьюхи это не таблицы а только результат запросов
view - это сам запрос, а не его результат. Результат запроса не хранится и даже не факт, что именно этот запрос будет выполняться. Чтение из view может интересным образом переписывать запрос скрытый во вьюхе. Выкидывать ненужные джойны, пробрасывать вовнутрь условия из внешнего запроса (правда, я плохо помню, что из этого умеет mysql с форками)
Результат запроса - это Materialized View, mysql их не умеет.
Можно ли сделать insert в view - вопрос более интересный. Иногда можно: http://sqlfiddle[dot]com/#!9/d856f/1
(хм. а я удивился, в mysql запрещено во вьюху утрамбовать подзапрос from table join (select ... ) sq)
К ошибке
Цитата:ERROR 1442 (HY000): Can't update table 'tabla' in stored function/trigger becaus
e it is already used by statement which invoked this stored function/trigger.
приводит как раз то, что ваша view простая и mysql может преобразовать insert запрос к ней в insert запрос к вышестоящей таблице.
И что получается?
Top-level запрос делает insert в tabla, срабатывает on insert триггер, делает insert во вьюшку, который переписывается в insert в tabla, дальше должен сработать on insert триггер и так далее без условия выхода.
Разработчики mysql не стали задумываться над этими материями и просто запретили из триггеров проводить любые пишущие манипуляции с таблицами, которые уже вызвали триггеры.
При чём тут хранимки - наверное у них тот же запрет действует. Но хранимки в mysql вещь такая удивительная... Используйте или mysql или хранимки но не оба сразу.
А вот если в триггере попробуете писать куда-нибудь в другое место - то всё получится.
|