ahem... devi mettere la chiave dentro la insert, sennò come fa a "scattare" il duplicate keys?Originariamente inviato da saggio68
c'è ID che è primary key (ho letto qui che va bene), ma non fa l'update.
Se per ID intendi un campo autoincrementante, OVVIAMENTE non funzionerà mai.
Perchè ad ogni insert ti metterà un ID nuovo (aggiunto) e niente collisione
INSERT INTO libri (autore,titolo, casa) VALUES ('calvino','il sentiero dei nidi di ragno','einaudi')
ON DUPLICATE KEY UPDATE casa='rizzoli'
Se autore e titolo non cambiano mai (cambia solo la casa), puoi fare qualcosa tipo aggiungere un campo chiave intera (... chiave primaria ovviamente...) che userai così
chiave=crc32(concat(autore,titolo))
e ci metti un bel
INSERT INTO libri (chiave, autore,titolo,casa) VALUES (crc32(concat('calvino','il sentiero dei nidi di ragno')),'calvino','il sentiero dei nidi di ragno','einaudi')
ON DUPLICATE KEY UPDATE casa='rizzoli'
questo dovrebbe funzionare (se non hai un numero gigantesco di libri, milioni)