Rumah > Soal Jawab > teks badan
P粉6499901632023-08-31 15:04:19
Saya akan memastikan semuanya dalam proses: maka semua kod yang berkaitan dengan tingkah laku ini berada di satu tempat. Juga: bukankah kebuntuan akan mengikuti pelaksanaan pernyataan CALL anda dan bukannya meneruskan? Jika kita meneruskan, maka masalah itu mungkin telah diselesaikan dan kemudian kita tidak menunggu apa-apa. Selain itu, urus niaga berikutan kebuntuan hanya akan dilaksanakan selepas kebuntuan diselesaikan.
Pendekatan saya terhadap kod anda ialah:
CREATE PROCEDURE manageAccounts() BEGIN DECLARE totalTrys INT DEFAULT 0; DECLARE EXIT HANDLER FOR SQLEXCEPTION GET DIAGNOSTICS CONDITION 1 @err_num = MYSQL_ERRNO; CALL guardi.prod_update_guardi_accounts(); WHILE(@err_num = 1213 AND totalTrys < 4) DO SET totalTrys = totalTrys + 1; SELECT SLEEP(900); CALL guardi.prod_update_guardi_accounts(); END WHILE; END;
Anda perlu menguji ini: belum diuji, jadi kesilapan menaip tidak mustahil.