Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bedingte MySQL-Einfügung

Wenn Ihr DBMS keine Beschränkungen auferlegt, aus welcher Tabelle Sie auswählen, wenn Sie eine Einfügung ausführen, versuchen Sie Folgendes:

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)

Dabei dual ist eine Tabelle mit nur einer Zeile (ursprünglich in Oracle gefunden, jetzt auch in MySQL). Die Logik besteht darin, dass die SELECT-Anweisung eine einzelne Datenzeile mit den erforderlichen Werten generiert, aber nur, wenn die Werte noch nicht gefunden wurden.

Sehen Sie sich alternativ die MERGE-Anweisung an.