Mysql
 sql >> Base de données >  >> RDS >> Mysql

Insertion conditionnelle MySQL

Si votre SGBD n'impose pas de limitations sur la table à partir de laquelle vous sélectionnez lorsque vous exécutez une insertion, essayez :

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 cela, dual est une table avec une seule ligne (trouvé à l'origine dans Oracle, maintenant aussi dans mysql). La logique est que l'instruction SELECT génère une seule ligne de données avec les valeurs requises, mais uniquement lorsque les valeurs ne sont pas déjà trouvées.

Vous pouvez également consulter l'instruction MERGE.