Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

DEFINER จำเป็นหรือไม่เมื่อสร้าง Stored Procedure ใน MySQL

ไม่จำเป็น - ส่วน DEFINER เป็นตัวเลือก (Optional) ใช้ فقطเมื่อต้องการกำหนดผู้สร้าง/เจ้าของ Procedure โดยเฉพาะ

ตรวจสอบ User และ Host ในระบบ

mysql> SELECT user, host FROM mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Manish           | %         |
| User2            | %         |
| mysql.infoschema | %         |
| mysql.session    | %         |
| mysql.sys        | %         |
| root             | %         |
| Adam Smith       | localhost |
| User1            | localhost |
| am               | localhost |
+------------------+-----------+

ตัวอย่างสร้าง Procedure พร้อม DEFINER

mysql> DELIMITER //
mysql> CREATE DEFINER = 'Adam Smith'@'localhost' PROCEDURE Sp_Definer()
    -> BEGIN
    ->   SELECT 'Hello MySQL';
    -> END //
Query OK, 0 rows affected (0.14 sec)
mysql> DELIMITER ;

เรียกใช้ Procedure

mysql> CALL Sp_Definer();
+-------------+
| Hello MySQL |
+-------------+
| Hello MySQL |
+-------------+

คำอธิบาย: หากไม่ระบุ DEFINER จะใช้ User ที่สร้าง Procedure เป็นค่าเริ่มต้น (CURRENT_USER)