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

SQL - IF EXISTS UPDATE ELSE INSERT INTO

  1. Créez un UNIQUE contrainte sur votre subs_email colonne, si elle n'existe pas déjà :

    ALTER TABLE subs ADD UNIQUE (subs_email)
    
  2. Utilisez INSERT ... ON DUPLICATE KEY UPDATE :

    INSERT INTO subs
      (subs_name, subs_email, subs_birthday)
    VALUES
      (?, ?, ?)
    ON DUPLICATE KEY UPDATE
      subs_name     = VALUES(subs_name),
      subs_birthday = VALUES(subs_birthday)
    

Vous pouvez utiliser la fonction VALUES(col_name) dans la clause UPDATE pour faire référence aux valeurs de colonne de la partie INSERT de INSERT ... ONDUPLICATE KEY UPDATE - dev.mysql.com

  1. Notez que j'ai utilisé des paramètres fictifs à la place des littéraux de chaîne, comme un vraiment devrait utiliser des instructions paramétrées pour se défendre contre les attaques par injection SQL .