Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL INSERT se non esiste (non si utilizza la chiave primaria)

1) Puoi aggiungere un UNIQUE vincolo su (myid, theirid) ? Se sì, aggiungi questo vincolo e usa:

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

e ignora gli avvisi di produzione (o sostituisci quanto sopra con INSERT IGNORE )

2) Se non puoi aggiungere tale vincolo (ad es. a volte vuoi consentire tali duplicati e altre volte no), puoi utilizzare questo:

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