Lakukan sisipan ke dalam pangkalan data untuk menangkap ralat kunci pendua
P粉920835423
P粉920835423 2024-03-28 08:58:51
0
1
417

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粉920835423
P粉920835423

membalas semua(1)
P粉362071992

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 将增加 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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan