2010-11-02 22 views
2

J'ai deux scripts, un pour l'insertion et un autre pour la mise à jour.Erreur d'instruction MySQL Update

Mon script bouton de mise à jour utilise la dernière Inséré Id, et va sur quelque chose comme ceci:

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); 

Apparemment, le "where" génère une erreur:

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

Y at-il D'autre manière dans laquelle je pourrais utiliser le dernier ID inséré de la même table que je suis mise à jour?

Merci.

Répondre

3

attendez une seconde. Pourquoi utilisez-vous ET pour délimiter les éléments de claus SET? il doit être séparé par des virgules.

1

Vous ne pouvez pas utiliser le même table (dans ce cas, table tblsurvey) pour la sous-requête FROM et la cible de mise à jour.

Il est illégal d'utiliser la même table pour la mise à jour/la suppression et la sous-requête pour les opérations UPDATE et DELETE.

+0

bien, puisque je ne peux rien faire à ce sujet, j'ai décidé de créer simplement un autre sp qui obtient le dernier id inséré .. merci quand même. :) – iceheaven31