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

MySQL INSERT s'il n'existe pas (n'utilise pas de clé primaire)

1) Pouvez-vous ajouter un UNIQUE contrainte sur (myid, theirid) ? Si oui, ajoutez cette contrainte et utilisez :

INSERT INTO mytable (myid, theirid) 
  VALUES (5, 1) ;

et ignorez les avertissements de produit (ou remplacez ce qui précède par INSERT IGNORE )

2) Si vous ne pouvez pas ajouter une telle contrainte (par exemple, vous souhaitez parfois autoriser de tels doublons et d'autres fois non), vous pouvez utiliser ceci :

INSERT INTO mytable (myid, theirid) 
  SELECT 5, 1 
  FROM dual 
  WHERE NOT EXISTS
        ( SELECT *
          FROM mytable
          WHERE myid = 5
            AND theirid = 1
        ) ;