Cual es la diferencia entre usar on duplicate key y solamente update? Por que tambien puedo usar solamente el comando update

Pregunta de la clase:
Comando on duplicate key
Adrian Ronaldo Hermoza Bayona

Adrian Ronaldo Hermoza Bayona

Pregunta
studenthace 5 años

Cual es la diferencia entre usar on duplicate key y solamente update? Por que tambien puedo usar solamente el comando update

3 respuestas
para escribir tu comentario
    DAVID STEVEN BOCAREJO IBAÑEZ

    DAVID STEVEN BOCAREJO IBAÑEZ

    studenthace 5 años

    Lo que pasa es que si tu insertas "INSERT" valores que por definición no pueden ser repetidos (Ósea valores Primary key como el ID, o valores que hallas declarado de tipo UNIQUE como en este caso el email) la base de dato proeje estos valores, por lo tanto su reacción es arrojar error y evitar que se pueda ejecutar la acción.

    Lo que tu haces con la sentencia "ON DUPLICATE KEY" es decirle a la base de datos, Quiero insertar este registro "por medio del INSERT y el VALUES" peroooo, si este registro ya esta en la base de dato, en lugar de arrojarme un error por favor realiza la siguiente acción "Y le indicas que acción realizar después de la sentencia" .

    Ejemplo:

    INSERT INTO cleints(client_id ,name,email, birthdate, gender, active)
    VALUES(4, 'Pedro', 'email@gamil.com', '26-04-1992', 'M', 0) ON DUPLICATE KEY UPDATE active = VALUES(active)

    En este caso Lo que le estas diciendo a la base de datos es, Por favor inserta este registro.

    VALUES(4, 'Pedro', 'email@gamil.com', '26-04-1992', 'M', 0)
    Pero si este valor ya esta repetido
    ON DUPLICATE KEY

    En lugar de arrojarme error actualiza el Atributo "active" y pone el valor que te indique en la seccion de VALUES "Segunda linea de codigo, es decir 0".

    active = VALUES(active)

    Ósea a groso modo si solo utilizas el ON DUPLICATE KEY, el código realiza la Un registro nuevo si no esta duplicado y si si lo esta realiza lo que tu le indiques después de la sentencia.

    en cambio si solo pones el UPDATE, esta es una actualización así que solo hace un cambio de valores ya existentes.

    Adrian Ronaldo Hermoza Bayona

    Adrian Ronaldo Hermoza Bayona

    studenthace 5 años

    Perfecto muchas gracias

    Fernando Chavez

    Fernando Chavez

    studenthace 5 años

    En principio ninguna. On Duplicate Key te sirve para tener un flujo más rápido cuando estas insertando data y deseas modificar campos en especifico.

    Pero por ejemplo, si desearas modificar todas las columnas de una tabla en las que se cumpla X condición te vendría mucho mejor usar Update directamente.

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Aprende desde cero SQL, el lenguaje para gestionar y consultar bases de datos relacionales. Elabora tablas, cruza, elimina, modifica y consulta información. Conoce las funciones de MySQL como gestor de base de datos para crear aplicaciones y soluciones tecnológicas efectivas.

Curso de SQL y MySQL desde Cero ► Empieza Gratis
Curso de SQL y MySQL desde Cero ► Empieza Gratis

Curso de SQL y MySQL desde Cero ► Empieza Gratis

Aprende desde cero SQL, el lenguaje para gestionar y consultar bases de datos relacionales. Elabora tablas, cruza, elimina, modifica y consulta información. Conoce las funciones de MySQL como gestor de base de datos para crear aplicaciones y soluciones tecnológicas efectivas.