Rumah > Soal Jawab > teks badan
Permohonan saya mungkin memasukkan data kunci utama pendua, keraguan saya ialah apakah cara yang paling berkesan, untuk menyemak sama ada kunci itu sudah wujud sebelum memasukkan, atau hanya memasukkan dan biarkan bank mengembalikan ralat dan kemudian mengendalikannya? Yang manakah mempunyai kesan yang kurang? Terima kasih
P粉3620719922024-03-29 07:32:06
Cara paling berkesan ialah menggunakan pertanyaan dengan ON DUPLICATE KEY UPDATE
子句的 INSERT
.
Jika kunci utama tidak wujud, ini akan memasukkan rekod baharu; jika kunci utama sudah wujud, hanya medan yang ditentukan bagi rekod kunci utama akan dikemas kini (tiada ralat akan dibuang).
Sebagai contoh, jika user_id
不存在,以下代码将创建一个新用户。如果user_id
确实存在,它只会更新last_visited_date
.
INSERT INTO users (user_id, last_visited_date) VALUES ({user_id}, UTC_TIMESTAMP()) ON DUPLICATE KEY UPDATE last_visited_date= VALUES(last_visited_date)
Pendekatan ini membolehkan anda mencipta rekod baharu dan mengemas kini rekod sedia ada dengan satu pertanyaan, menghapuskan keperluan untuk menyemak kunci utama sedia ada.
Nota: Jika kunci utama ialah indeks kenaikan automatik, MySQL akan ON DUPLICATE UPDATE
子句视为与 INSERT
查询相同,因此下一个 ID 将增加 < code>1 selagi kunci utama sudah wujud.
Jika anda tidak mahu menggunakan klausa ON DUPLICATE KEY UPDATE
, menangkap ralat pada kunci utama sedia ada akan menjadi pendekatan yang paling berprestasi.