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.