2011-08-26 9 views
5

Sto inserendo alcuni dati in una tabella, ma occasionalmente si scontrano con altri dati nella tabella (cioè ha la stessa chiave primaria).
Mi piacerebbe essere in grado di sovrascrivere solo questi dati se è lì, invece di avere mysql mi invia un messaggio di errore che dice che la loro è una chiave primaria duplicata. So che posso cancellare questi valori in anticipo, ma richiederebbe una query piuttosto ampia.
È possibile sovrascrivere questi in qualche modo e sopprimere eventuali avvisi, oppure sono costretto a rimuovere questi valori.Inserimento in una tabella mysql e sovrascrittura di eventuali dati correnti

risposta

13

solo un po 'bigino
Mysql ha 3 diversi scenari nella gestione di duplicati delle chiavi primarie:
se si desidera ...

2

È possibile utilizzare REPLACE INTO in MySQL per fare questo.

REPLACE INTO table 
SET name = 'Treffynnon' 
+3

Mi piace l'auto promozione spudorata. –

3

MySQL ha un "INSERT ... DUPLICATO KEY UPDATE ON" comando. Lo si può trovare qui: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

INSERT INTO `table` VALUES ('a', 'b') ON DUPLICATE KEY UPDATE `field1`='a', `field2`='b' 
+2

'set field = VALUES (field)' è un'opzione migliore: consente di risparmiare l'utilizzo dei dati due volte nella query. la funzione values ​​() la estrarrà dalla parte di inserimento dell'istruzione per te, quindi i tuoi dati entreranno nella stringa di query solo una volta. –

Problemi correlati