Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah prosedur tersimpan bekerja dengan dua database yang berbeda? Bagaimana dengan dua server?

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 mydb2 . kualifikasi. Jika prosedur tersimpan berada di mydb1 database, saya akan membutuhkan kualifikasi tersebut, tetapi sebaliknya saya tidak memerlukan mydb1 . tempat kemunculannya.

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peningkatan Otomatis tidak berfungsi untuk kelas Entitas dengan Kunci komposit

  2. Memesan ID mySQL yang bertambah secara otomatis?

  3. gem install mysql:Gagal membangun ekstensi asli permata (Mac Lion)

  4. Apakah mungkin untuk mengoptimalkan kueri menggunakan klausa EXISTS alih-alih IN dengan DISTINCT

  5. setara dengan permintaan paralel ORACLE di mysql