Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menukar Nilai Baris dalam MySQL dengan Kekangan Unik?
Nilai Baris Menukar MySQL dengan Kekangan Unik
Dalam MySQL, menukar nilai keutamaan dua baris dengan kekangan unik pada lajur keutamaan boleh cabaran.
Masalah:
Apabila menggunakan pernyataan ini untuk menukar nilai:
UPDATE tasks SET priority = CASE WHEN priority=2 THEN 3 WHEN priority=3 THEN 2 END WHERE priority IN (2,3);
ralat berlaku disebabkan pelanggaran entri pendua kekangan yang unik.
Penyelesaian:
Malangnya, menukar nilai tanpa menggunakan berbilang pertanyaan atau nilai palsu tidak boleh dilakukan dalam MySQL. Ini kerana MySQL menguatkuasakan semakan kekangan selepas setiap kemas kini baris, tidak seperti beberapa DBMS lain.
Pendekatan Alternatif:
Untuk menukar nilai tanpa melanggar kekangan, anda boleh menggunakan langkah berikut dalam urus niaga:
Penyata Transaksi:
START TRANSACTION ; UPDATE tasks SET priority = CASE WHEN priority = 2 THEN -3 WHEN priority = 3 THEN -2 END WHERE priority IN (2,3) ; UPDATE tasks SET priority = - priority WHERE priority IN (-2,-3) ; COMMIT ;
Nota:
Pendekatan ini memerlukan lajur unik menjadi integer bertanda tanpa nilai negatif. Jika nilai negatif dibenarkan, penyelesaian yang berbeza mungkin diperlukan.
Atas ialah kandungan terperinci Bagaimana untuk menukar Nilai Baris dalam MySQL dengan Kekangan Unik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!