Jika kita berbicara tentang dua database di server yang sama:ya, prosedur tersimpan dapat mengakses database lain. Anda harus memastikan bahwa pengguna yang memiliki hak istimewa yang menjalankan prosedur memiliki hak istimewa yang diperlukan pada setiap basis data.
Misalnya, Anda memiliki dua database di server yang sama, mydb1
dan mydb2
, dan masing-masing berisi tabel bernama messages
dengan struktur yang sama. Misalkan Anda ingin menambahkan prosedur tersimpan ke mydb2
yang mengosongkan messages
tabel di mydb2
dan menyalin konten messages
tabel di mydb1
. Anda bisa melakukan ini:
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
Lihat bagaimana saya telah sepenuhnya memenuhi syarat tabel dengan database tempat mereka berada. Sebenarnya Anda dapat berargumen bahwa saya terlalu bersemangat di sini, karena kami menetapkan bahwa prosedur tersimpan ini akan termasuk dalam mydb2
. Saya tidak perlu menambahkan
kualifikasi. Jika prosedur tersimpan berada di mydb2
.mydb1
database, saya akan membutuhkan kualifikasi tersebut, tetapi sebaliknya saya tidak memerlukan
tempat kemunculannya.mydb1
.
Agar dapat menjalankan prosedur ini (mungkin agar dapat mendefinisikannya?), Saya perlu memastikan bahwa pengguna saya memiliki DELETE
dan INSERT
hak istimewa di mydb2
, dan juga SELECT
hak istimewa di mydb1
.
Basis data di server yang berbeda terdengar agak lebih rumit.