यदि हम एक ही सर्वर पर दो डेटाबेस के बारे में बात कर रहे हैं:हाँ, एक संग्रहीत प्रक्रिया दूसरे डेटाबेस तक पहुँच सकती है। आपको यह सुनिश्चित करना होगा कि जिस उपयोगकर्ता के विशेषाधिकारों के तहत प्रक्रिया चल रही है, उसके पास प्रत्येक डेटाबेस पर आवश्यक विशेषाधिकार हैं।
उदाहरण के लिए, मान लें कि आपके पास एक ही सर्वर पर दो डेटाबेस हैं, mydb1
और mydb2
, और प्रत्येक में messages
. नाम की एक तालिका होती है एक ही संरचना के साथ। मान लीजिए कि आप mydb2
. में एक संग्रहित प्रक्रिया जोड़ना चाहते हैं जो messages
. को खाली करता है mydb2
में तालिका और messages
. की सामग्री को कॉपी करता है mydb1
में तालिका . आप यह कर सकते हैं:
CREATE PROCEDURE `SynchroniseMessages` ()
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
BEGIN
DELETE FROM `mydb2`.`messages`;
INSERT INTO
`mydb2`.`messages`
SELECT * FROM `mydb1`.`messages`;
END
देखें कि मैंने उन डेटाबेस के साथ तालिकाओं को पूरी तरह योग्यता कैसे प्राप्त की है जिनसे वे संबंधित हैं। वास्तव में आप यह तर्क दे सकते हैं कि मैं यहां अति उत्साही हो रहा हूं, क्योंकि हमने निर्दिष्ट किया है कि यह संग्रहीत कार्यविधि mydb2
में होगी . मुझे
क्वालीफायर यदि संग्रहीत कार्यविधि mydb2
जोड़ने की जरूरत नहीं है .mydb1
. में थी डेटाबेस, मुझे उन क्वालिफायर की आवश्यकता होगी, लेकिन इसके विपरीत मुझे
जहां यह दिखाई देता है।mydb1
की आवश्यकता नहीं होगी .
इस प्रक्रिया को चलाने में सक्षम होने के लिए (संभवतः इसे परिभाषित करने में सक्षम होने के लिए?), मुझे यह सुनिश्चित करना होगा कि मेरे उपयोगकर्ता के पास DELETE
है और INSERT
mydb2
. पर विशेषाधिकार , और SELECT
. भी mydb1
. पर विशेषाधिकार ।
विभिन्न सर्वरों पर डेटाबेस अधिक जटिल लगता है।