Θέλω να προσθέσω μια γραμμή σε έναν πίνακα βάσης δεδομένων, αλλά αν υπάρχει μια γραμμή με το ίδιο μοναδικό κλειδί, θέλω να ενημερώσω τη γραμμή.
Για παράδειγμα,
insert into table (id, name, age) values(1, "A", 19)
Ας υποθέσουμε ότι το μοναδικό κλειδί είναι id
, και στη βάση δεδομένων μου υπάρχει μια γραμμή με id = 1
. Σε αυτή την περίπτωση θέλω να ενημερώσω αυτή τη γραμμή με αυτές τις τιμές. Κανονικά αυτό δίνει ένα σφάλμα. Αν χρησιμοποιήσω το insert IGNORE
θα αγνοήσει το σφάλμα, αλλά και πάλι δεν θα γίνει ενημέρωση.
Χρησιμοποιήστε INSERT ... ON DUPLICATE KEY UPDATE
QUERY:
INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
name="A", age=19
Ελέγξτε το REPLACE
http://dev.mysql.com/doc/refman/5.0/en/replace.html
REPLACE into table (id, name, age) values(1, "A", 19)
Δοκιμάστε αυτό:
INSERT INTO table (id, name, age) VALUES (1, 'A', 19) ON DUPLICATE KEY UPDATE id = id + 1;
Ελπίζω αυτό να βοηθήσει.