नहीं, स्टोर्ड प्रोसीजर बनाते समय DEFINER भाग अनिवार्य नहीं है। इसका उपयोग तब किया जाता है जब आप एक विशिष्ट डिफाइनर बनाना चाहते हैं।
MySQL यूजर और होस्ट जांचें
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 | +------------------+-----------+ 9 rows in set (0.03 sec)
'Adam Smith' के रूप में डिफाइनर बनाएं
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 ;
स्टोर्ड प्रोसीजर कॉल करें
CALL yourStoredProcedureName();
mysql> CALL Sp_Definer();
आउटपुट
+-------------+ | Hello MySQL | +-------------+ | Hello MySQL | +-------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
यदि DEFINER निर्दिष्ट नहीं किया जाता है, तो डिफ़ॉल्ट रूप से प्रोसीजर बनाने वाला यूजर डिफाइनर होता है।