sql >> Database >  >> RDS >> Mysql

MySQL voorwaardelijk invoegen

Als uw DBMS geen beperkingen oplegt aan de tabel waaruit u selecteert wanneer u een invoeging uitvoert, probeer dan:

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 deze, dual is een tabel met slechts één rij (oorspronkelijk gevonden in Oracle, nu ook in mysql). De logica is dat de SELECT-instructie een enkele rij gegevens genereert met de vereiste waarden, maar alleen als de waarden nog niet zijn gevonden.

U kunt ook de MERGE-instructie bekijken.



  1. Hoe MySQL-implementaties te bewaken met Prometheus &Grafana op ScaleGrid

  2. Sorteert 'Selecteren' altijd op primaire sleutel?

  3. Spring Data @CreatedDate annotatie werkt niet voor mij

  4. Redenen om optimistisch te zijn over de toekomst van Microsoft Access