Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

can't specify target table for update in from clause

Estas en el tema de can't specify target table for update in from clause en el foro de Mysql en Foros del Web. Hola a todos , Tengo un problema, tengo esta sentencia: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original UPDATE subdominios sub SET sub . dominioid =   ...
  #1 (permalink)  
Antiguo 04/12/2015, 03:13
 
Fecha de Ingreso: diciembre-2015
Mensajes: 1
Antigüedad: 8 años, 4 meses
Puntos: 0
can't specify target table for update in from clause

Hola a todos ,

Tengo un problema, tengo esta sentencia:

Código SQL:
Ver original
  1. UPDATE subdominios sub SET sub.dominioid =
  2.     (SELECT dom.id_dominio FROM dominios dom WHERE dom.codigo IN (SELECT SUBSTRING_INDEX(sub.codigo,'.',2) FROM subdominios sub))

con el siguiente error :


can't specify target table for update in from clause

este select funciona de la manera que quiero :
Código SQL:
Ver original
  1. SELECT dom.id_dominio FROM dominios dom WHERE dom.codigo IN (SELECT SUBSTRING_INDEX(sub.codigo,'.',2) FROM subdominios sub)

pero no consigo actualizar por ese error


Un saludo.

Última edición por gnzsoloyo; 04/12/2015 a las 05:22
  #2 (permalink)  
Antiguo 04/12/2015, 05:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: can't specify target table for update in from clause

Para hacerlo simple: No puedes cortar ni podar la misma rama del árbol donde estás parado...

Por seguridad de procesos, no puedes actualizar la misma tabla que estas leyendo. MySQL no puede saber de antemano si el registro que modificas y la modificación que deseas aplicar, no están afectando el mismo registro sobre el que estás parado y su referencia en el índice.
Ese tipo de acciones no se permiten en MySQL.

Lo que deseas hacer te conviene hacerlo en dos sentencias, o en un stored procedure.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: select, table, target, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:02.