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
solo un po 'bigino
Mysql ha 3 diversi scenari nella gestione di duplicati delle chiavi primarie:
se si desidera ...
- fare nulla - usa INSERTO IGNORE
- elimina esistente e crea nuovo - usa REPLACE INTO
- aggiornamento esistente - usa ON DUPLICATE UPDATE
È possibile utilizzare sostituire invece di inserire. Guardate http://dev.mysql.com/doc/refman/5.1/en/replace.html
È possibile utilizzare REPLACE INTO in MySQL per fare questo.
REPLACE INTO table
SET name = 'Treffynnon'
Cercare "aggiornamento chiave duplicato".
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
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'
'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. –
Mi piace l'auto promozione spudorata. –