Als we het hebben over twee databases op dezelfde server:ja, een opgeslagen procedure kan toegang krijgen tot een andere database. U moet ervoor zorgen dat de gebruiker onder wiens privileges de procedure wordt uitgevoerd de nodige privileges heeft op elke database.
Stel bijvoorbeeld dat u twee databases op dezelfde server heeft, mydb1 en mydb2 , en dat elk een tabel bevat met de naam messages met dezelfde structuur. Stel dat u een opgeslagen procedure wilt toevoegen aan mydb2 die de messages . leegt tabel in mydb2 en kopieert de inhoud van de messages tabel in mydb1 . Je zou dit kunnen doen:
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
Zie hoe ik de tabellen volledig heb gekwalificeerd met de databases waartoe ze behoren. Je zou zelfs kunnen beweren dat ik hier te ijverig ben, omdat we hebben gespecificeerd dat deze opgeslagen procedure in mydb2 thuishoort. . Ik hoef de kwalificatie. Als de opgeslagen procedure in de mydb2 . niet toe te voegen .mydb1 database, zou ik die kwalificaties nodig hebben, maar omgekeerd zou ik de waar het verschijnt.mydb1 niet nodig hebben .
Om deze procedure te kunnen uitvoeren (mogelijk om het te kunnen definiëren?), moet ik ervoor zorgen dat mijn gebruiker DELETE heeft en INSERT privileges op mydb2 , en ook SELECT privileges op mydb1 .
Databases op verschillende servers klinken wat ingewikkelder.