Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

Error Code: 1175

Cuando voy hacer UPDATE tbproducto SET sabor = 'Cítrico' WHERE sabor ='Limón'; me genera un error 1175, pues ya tengo definido el pk que es producto. Entonces no entiendo porque se produce el error y siempre toca deshabilitar el modo seguro para que pueda hacer la consulta. Que podria tener mal configurado para que la consulta se ejecute sin necesidad de deshabilitar ese modo?

Nota: Justo corri el script numero 5 donde se actualizaron los registros de la tabla tbproducto.

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

3 respuestas

Será porque al no usar la PK en el where y tener el Safe update activado?

¡Hola Jesús!

El error 1175 que estás experimentando ocurre cuando tienes activado el modo seguro en MySQL. Este modo seguro se utiliza para evitar actualizaciones o eliminaciones accidentales en tablas que tienen claves primarias definidas. Cuando intentas realizar una actualización en una tabla con una clave primaria definida, como en tu caso, el modo seguro te impide hacerlo.

Para solucionar este problema sin deshabilitar el modo seguro, puedes utilizar una cláusula adicional en tu consulta UPDATE. En lugar de intentar actualizar directamente el campo "sabor" de la tabla "tbproducto", puedes utilizar una subconsulta para seleccionar los registros que deseas actualizar. Aquí tienes un ejemplo:

UPDATE tbproducto
SET sabor = 'Cítrico'
WHERE id IN (SELECT id FROM tbproducto WHERE sabor = 'Limón');

En este ejemplo, estamos utilizando una subconsulta para seleccionar los registros que tienen el valor "Limón" en el campo "sabor". Luego, utilizamos la cláusula WHERE en la consulta UPDATE para actualizar solo esos registros.

Espero que esta solución te sea útil. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Buena suerte con tus estudios de SQL!

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)
solución!

Estaba utilizando lo siguiente: UPDATE tbproducto SET sabor = 'Cítrico' WHERE PRODUCTO IN (SELECT PRODUCTO FROM tbproducto WHERE sabor = 'Limón');

Pero me salio un error 1093 que no puedo modificar la misma tabla en una subconsulta que está siendo utilizada en una cláusula WHERE de la consulta principal.

Buscando encontre que se puede hacer un join para crear dos instancias de la tabla tbproducto asi

UPDATE tbproducto as p1 join tbproducto as p2 on p1.producto=p2.producto SET p1.sabor = 'Limón' WHERE p2.sabor='Cítrico'