Section courante

A propos

Section administrative du site

Code d'erreur : 1093

ER_UPDATE_TABLE_USED
MySQL  

Formulation

MySQL Error 1093 - Can't specify target table for update in FROM clause

Description

Cette valeur indique qu'une erreur d'impossibilité d'effectuer une mise-à-jour dans la table spécifié est survenue.

Remarque

Cause

Cette situation est provoqué à cause que vous tentez de modifier la même table que vous utilisez dans la partie SELECT.

Solution

Vous aurez besoin de cesser d'utiliser une sous-requête SQL imbriqué et exécuter l'opération en deux parties ou encore utiliser une simple clause. A partir de la version 5.7.6 de MySQL vous pouvez également indiquer «SET optimizer_switch = 'derived_merge=off';» mais cela à un impact très sérieux sur la performance. Si vous recevez l'erreur suivante en tentant d'effectuer une suppression d'enregistrement :

MySQL Error 1093 - Can't specify target table for update in FROM clause

Et que vous avez une formulation comme ceci :

  1. DELETE FROM event WHERE idEvent IN (
  2.   SELECT DISTINCT evenement.idEvent FROM event
  3.   WHERE evenement.idCategory=100
  4. );

Vous devriez ajouter un SELECT entre votre DELETE IN :

  1. DELETE FROM event WHERE idEvent IN (
  2.  SELECT idEvent FROM (
  3.   SELECT DISTINCT evenement.idEvent FROM event
  4.   WHERE evenement.idCategory=100
  5.  ) AS idEvent
  6. );


Dernière mise à jour : Jeudi, le 11 août 2016