sql >> Base de Datos >  >> RDS >> Mysql

Inserción condicional de MySQL

Si su DBMS no impone limitaciones sobre qué tabla selecciona cuando ejecuta una inserción, intente:

INSERT INTO x_table(instance, user, item) 
    SELECT 919191, 123, 456
        FROM dual
        WHERE NOT EXISTS (SELECT * FROM x_table
                             WHERE user = 123 
                               AND item = 456)

En esto, dual es una tabla con una sola fila (originalmente en Oracle, ahora también en mysql). La lógica es que la declaración SELECT genera una sola fila de datos con los valores requeridos, pero solo cuando los valores aún no se encuentran.

Alternativamente, mire la instrucción MERGE.