Rumah > pangkalan data > tutorial mysql > Bagaimanakah MySQL's INSERT ... ON DUPLICATE KEY UPDATE Boleh Mengendalikan Sisipan dan Kemas Kini Bersyarat?

Bagaimanakah MySQL's INSERT ... ON DUPLICATE KEY UPDATE Boleh Mengendalikan Sisipan dan Kemas Kini Bersyarat?

Barbara Streisand
Lepaskan: 2024-12-13 15:07:10
asal
306 orang telah melayarinya

How Can MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Conditional Inserts and Updates?

Menguruskan Pendua dengan Sisipan Bersyarat dan Kemas Kini dalam MySQL

Apabila bekerja dengan pangkalan data, selalunya perlu untuk menangani situasi di mana rekod dengan nilai unik yang sama mungkin perlu sama ada dimasukkan atau dikemas kini. MySQL menyediakan penyelesaian yang mudah untuk senario ini melalui sintaks INSERT ... PADA DUPLICATE KEY UPDATE.

Pertimbangkan situasi yang diterangkan dalam soalan. Seorang pengguna ingin memasukkan data baharu ke dalam jadual AggregatedData. Walau bagaimanapun, mereka mahu data ini dimasukkan hanya jika medan datenum belum wujud dalam jadual. Jika ia wujud, mereka ingin mengemas kini medan Cap Waktu dengan nilai baharu.

Pendekatan awal yang digunakan oleh pengguna melibatkan pernyataan KEMASKINI:

UPDATE AggregatedData SET datenum="734152.979166667", Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";
Salin selepas log masuk

Walaupun pernyataan ini akan berfungsi jika nilai datenum sudah wujud, ia akan gagal jika nilai tidak terdapat dalam jadual. Untuk mengendalikan situasi ini dengan berkesan, INSERT ... ON DUPLICATE KEY UPDATE akan dimainkan.

Sintaks yang betul untuk operasi ini ialah:

INSERT INTO AggregatedData (datenum, Timestamp)
VALUES ("734152.979166667", "2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE 
  Timestamp=VALUES(Timestamp)
Salin selepas log masuk

Dalam pernyataan ini:

  • Bahagian INSERT ... cuba memasukkan baris baharu ke dalam jadual dengan yang ditentukan data.
  • Bahagian ON DUPLICATE KEY UPDATE ... menentukan perkara yang perlu dilakukan jika baris dengan nilai datenum yang sama sudah wujud. Dalam kes ini, ia mengemas kini medan Cap Waktu dengan nilai yang disediakan dalam klausa VALUES(Timestamp).

Menggunakan pendekatan ini, pengguna boleh memastikan bahawa data baharu dimasukkan apabila datenum adalah unik dan bahawa data sedia ada dikemas kini apabila datenum adalah pendua. Medan datenum tidak perlu disertakan dalam klausa KEMASKINI kerana ia tidak boleh diubah.

Atas ialah kandungan terperinci Bagaimanakah MySQL's INSERT ... ON DUPLICATE KEY UPDATE Boleh Mengendalikan Sisipan dan Kemas Kini Bersyarat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan