Rumah > Soal Jawab > teks badan
Apabila saya melaksanakan pertanyaan ini, saya mendapat mesej ralat ini "Kod ralat: 1172. Hasilnya mengandungi berbilang baris"
CREATE DEFINER=`root`@`localhost` PROCEDURE `un_follow`( user_been_following_id int, user_following_id int ) BEGIN declare id int; select following_id into id from user_following where user_been_following_id = user_been_following_id and user_following_id = user_following_id; delete from user_following where following_id = id; ENDAdakah membantu
id ialah kunci utama jadual di bawah?
P粉3223196012024-04-05 13:11:10
Pembolehubah setempat anda mempunyai nama yang sama dengan lajur jadual. Dengan cara ini anda tidak pernah membandingkan pembolehubah tempatan dengan lajur, tetapi sentiasa dengan pembolehubah tempatan itu sendiri.
Pertanyaan anda perlu kembali tepat satu baris untuk memberikan pembolehubah id
select following_id into id from user_following where user_been_following_id = user_been_following_id and user_following_id = user_following_id;
user_been_following_id dan user_following_id ditafsirkan sebagai pembolehubah setempat dalam semua keadaan dan oleh itu diterjemahkan seperti berikut
select following_id into id from user_following where 1 = 1 and 1 = 1;
Semua baris tempat pengguna_pengikut dikembalikan. Untuk membetulkannya, namakan semula pembolehubah setempat anda seperti
CREATE DEFINER=`root`@`localhost` PROCEDURE `un_follow`( local_user_been_following_id int, local_user_following_id int ) BEGIN declare id int; select following_id into id from user_following where user_been_following_id = local_user_been_following_id and user_following_id = local_user_following_id; delete from user_following where following_id = id; END
(dengan mengandaikan tiada lajur bernama local_user_been_following_id atau local_user_following_id pada jadual user_following)
Lihat juga di sini: https://dev.mysql.com/doc/ refman/8.0/ms/local-variable-scope.html