Gelung Melalui Baris dalam Jadual MySQL
Dalam MySQL, gelung melalui baris jadual boleh dicapai menggunakan prosedur atau berasaskan kursor pendekatan. Artikel ini meneroka kedua-dua kaedah berdasarkan senario tertentu yang melibatkan penyalinan data daripada Jadual A ke Jadual B.
Pendekatan Berasaskan Prosedur
Sesuatu prosedur merangkumi set operasi yang boleh berulang pada baris jadual. Berikut ialah contoh prosedur:
DELIMITER ;; CREATE PROCEDURE ROWPERROW() BEGIN DECLARE n INT DEFAULT 0; DECLARE i INT DEFAULT 0; SELECT COUNT(*) FROM table_A INTO n; SET i=0; WHILE i<n DO INSERT INTO table_B(ID, VAL) SELECT ID, VAL FROM table_A LIMIT i,1; SET i = i + 1; END WHILE; END; ;;
Selepas mencipta prosedur, anda boleh melaksanakannya menggunakan CALL ROWPERROW();.
Pendekatan berasaskan kursor
Kursor membenarkan lelaran pada set baris yang dikembalikan oleh pertanyaan. Berikut ialah pendekatan berasaskan kursor:
DELIMITER ;; CREATE PROCEDURE cursor_ROWPERROW() BEGIN DECLARE cursor_ID INT; DECLARE cursor_VAL VARCHAR; DECLARE done INT DEFAULT FALSE; DECLARE cursor_i CURSOR FOR SELECT ID,VAL FROM table_A; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cursor_i; read_loop: LOOP FETCH cursor_i INTO cursor_ID, cursor_VAL; IF done THEN LEAVE read_loop; END IF; INSERT INTO table_B(ID, VAL) VALUES(cursor_ID, cursor_VAL); END LOOP; CLOSE cursor_i; END; ;;
Ingat untuk mengisytiharkan pembolehubah dengan jenis data yang sesuai dan mengendalikan sebarang ralat atau pengecualian.
Pertimbangan
Kedua-dua pendekatan berasaskan prosedur dan berasaskan kursor boleh digunakan untuk menggelung melalui baris jadual. Walau bagaimanapun, kaedah berasaskan prosedur adalah kurang fleksibel daripada kursor. Kursor membenarkan operasi yang lebih kompleks, seperti mengemas kini berbilang baris serentak.
Atas sebab prestasi, pertanyaan berasaskan set biasanya lebih disukai daripada mekanisme gelung. Walau bagaimanapun, untuk tugas atau senario rumit yang memerlukan kemas kini masa nyata, pendekatan gelung mungkin diperlukan.
Atas ialah kandungan terperinci Cara Menggelung Melalui Baris dalam Jadual MySQL: Prosedur lwn Kursor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!