sql >> Databasteknik >  >> RDS >> Mysql

MySQL Conditional Insert

Om din DBMS inte sätter begränsningar för vilken tabell du väljer från när du kör en infogning, försök:

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)

I denna, dual är en tabell med endast en rad (hittades ursprungligen i Oracle, nu också i mysql). Logiken är att SELECT-satsen genererar en enda rad med data med de nödvändiga värdena, men bara när värdena inte redan finns.

Alternativt, titta på MERGE-satsen.



  1. Virtualmin:Du har inte tillgång till den här MySQL-databasen efter att ha ändrat lösenord

  2. Kan jag använda flera markörer på en anslutning med pyodbc och MS SQL Server?

  3. Skapa Oracle Sequence Trigger

  4. Laravel-5 "LIKE" motsvarighet (vältalande)