Ошибка оператора MySQL Update - PullRequest
2 голосов
/ 02 ноября 2010

У меня есть два сценария, один для вставки, а другой для обновления.

Мой скрипт кнопки обновления использует последний вставленный идентификатор и работает примерно так:

Update tblsurvey
set WouldLikeToBeSeenOnSite = 'sadffas'
and DislikedOnSite = 'asdfsadfsadf'
and OtherNewsWebsitesRead = 'asdfsadfa'
and LikedOnOtherNewsSites = 'asdfsadfas'
and IPAddress = '172.16.0.123'
and DateAnswered = current_date()
where SurveyResponseId in (select max(SurveyResponseId) from tblsurvey);

Видимо, предложение "where" генерирует ошибку:

1093 - you cant specify target table 'tblsurvey' for update in FROM clause. 

Есть ли другой способ использовать последний вставленный идентификатор той же таблицы, которую я обновляю?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 02 ноября 2010

подождите секунду. почему вы используете AND для разделения элементов SET? должно быть через запятую.

1 голос
/ 02 ноября 2010

вы не можете использовать одну и ту же таблицу (в данном случае таблицу tblsurvey) как для условия подзапроса FROM, так и для цели обновления.

Недопустимо использовать одну и ту же таблицу для обновления / удаленияи подзапрос для операций UPDATE и DELETE.

...