Mysql
 sql >> Database >  >> RDS >> Mysql

Inserimento condizionale MySQL

Se il tuo DBMS non impone limitazioni su quale tabella selezioni quando esegui un inserimento, prova:

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)

In questo, dual è una tabella con una sola riga (trovata originariamente in Oracle, ora anche in mysql). La logica è che l'istruzione SELECT genera una singola riga di dati con i valori richiesti, ma solo quando i valori non sono già stati trovati.

In alternativa, guarda l'istruzione MERGE.