Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Stored procedure đệ quy trong MySQL và lý do giới hạn độ sâu đệ quy

Stored procedure đệ quy là thủ tục tự gọi chính nó (recursion). MySQL giới hạn độ sâu đệ quy mặc định = 0 để tránh lỗi stack overflow, treo server.

Kiểm tra giới hạn:

mysql> SHOW VARIABLES LIKE '%recur%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_sp_recursion_depth | 0     |
+------------------------+-------+

Tăng giới hạn (tối đa 255):

mysql> SET @@GLOBAL.max_sp_recursion_depth = 255;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE '%recur%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| max_sp_recursion_depth | 255   |
+------------------------+-------+

Có thể set trong session hoặc trong thân thủ tục. Giới hạn bảo vệ server khỏi đệ quy vô tận/quá sâu.