ไม่จำเป็น - ส่วน 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)