Menukar Nilai Lajur MySQL dengan Kebenaran Terhad
Mengemas kini nilai lajur tanpa kebenaran untuk mengubah struktur pangkalan data boleh menimbulkan cabaran. Pendekatan intuitif menggunakan pernyataan KEMASKINI untuk menukar nilai, seperti jadual KEMASKINI SET X=Y, Y=X, tidak akan mencukupi. Sebaliknya, pertimbangkan kaedah berikut yang memintas perubahan struktur:
Kaedah 1
Gunakan pembolehubah sementara untuk menahan satu nilai sambil memberikan nilai yang lain. Ini memastikan kedua-dua nilai tidak ditindih dengan data yang sama.
UPDATE swap_test SET x=y, y=@temp WHERE (@temp:=x) IS NOT NULL;
Kaedah 2
Tukar nilai menggunakan satu siri tugasan. Kaedah ini mengendalikan kedua-dua nilai NULL dan bukan NULL dengan elegan.
UPDATE swap_test SET x=(@temp:=x), x = y, y = @temp;
Kaedah 3
Gunakan sambung sendiri untuk mengemas kini nilai merentas dua rujukan jadual. Kaedah ini memerlukan kunci utama atau indeks unik.
UPDATE swap_test s1, swap_test s2 SET s1.x=s1.y, s1.y=s2.x WHERE s1.id=s2.id;
Setiap kaedah menawarkan kelebihan dan had yang unik. Kaedah 1 boleh mengendalikan nilai bukan NULL, manakala Kaedah 2 boleh mengendalikan nilai NULL dan bukan NULL. Kaedah 3 memerlukan kunci utama, tetapi membenarkan pertukaran merentas baris yang berbeza jika dikehendaki. Akhirnya, pendekatan terbaik bergantung pada keperluan khusus tugasan yang sedang dijalankan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Nilai Lajur MySQL Tanpa Keizinan ALTER TABLE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!