Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào chúng ta có thể thay đổi một thủ tục lưu trữ MySQL?


Nếu chúng tôi có đặc quyền ALTER ROUTINE cho quy trình thì với sự trợ giúp của ALTER PROCEDURE tuyên bố chúng ta có thể thay đổi một thủ tục lưu trữ MySQL. Để chứng minh điều đó, chúng tôi đang lấy một ví dụ về một thủ tục được lưu trữ có tên là ‘delete_studentinfo’ có câu lệnh tạo sau đây -

mysql> SHOW CREATE PROCEDURE Delete_studentinfo\G
*************************** 1. row ***************************
           Procedure: Delete_studentinfo
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_
ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_studentinfo`( IN p_id INT)
BEGIN
DELETE FROM student_info
WHERE ID=p_id;
END
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.01 sec)

Trong tập kết quả trên, rõ ràng là không có chú thích nào trong thủ tục được lưu trữ ‘delete_studentinfo’. Bây giờ, với sự trợ giúp của câu lệnh ALTER PROCEDURE, chúng ta có thể thêm nhận xét như sau -

mysql> ALTER PROCEDURE Delete_studentinfo
   -> COMMENT 'deleting the record'//
Query OK, 0 rows affected (0.03 sec)

Bây giờ, có thể xác nhận rằng các nhận xét đã được thêm vào thủ tục được lưu trữ, với sự trợ giúp của tập kết quả của truy vấn sau -

mysql> SHOW CREATE PROCEDURE Delete_studentinfo\G
*************************** 1. row ***************************
           Procedure: Delete_studentinfo
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_
ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `Delete_studen
tinfo`( IN p_id INT)
   COMMENT 'deleting the record'
BEGIN
DELETE FROM student_info
WHERE ID=p_id;
END
character_set_client: cp850
collation_connection: cp850_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)