Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy procedura składowana może działać z dwiema różnymi bazami danych? Co powiesz na dwa serwery?

Jeśli mówimy o dwóch bazach danych na tym samym serwerze:tak, procedura składowana może uzyskać dostęp do innej bazy danych. Musisz upewnić się, że użytkownik, z którego uprawnień jest uruchamiana procedura, ma niezbędne uprawnienia w każdej bazie danych.

Załóżmy na przykład, że masz dwie bazy danych na tym samym serwerze, mydb1 i mydb2 i że każda zawiera tabelę o nazwie messages o tej samej strukturze. Załóżmy, że chcesz dodać procedurę składowaną do mydb2 który opróżnia messages tabela w mydb2 i kopiuje zawartość messages tabela w mydb1 . Możesz to zrobić:

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

Zobacz, jak w pełni zakwalifikowałem tabele z bazami danych, do których należą. W rzeczywistości można argumentować, że jestem tutaj nadgorliwy, ponieważ określiliśmy, że ta procedura składowana będzie należeć do mydb2 . Nie muszę dodawać mydb2 . kwalifikator. Jeśli procedura składowana znajdowała się w mydb1 bazy danych, potrzebowałbym tych kwalifikatorów, ale odwrotnie nie potrzebowałbym mydb1 . gdzie się pojawia.

Aby móc uruchomić tę procedurę (być może aby móc ją zdefiniować?), muszę się upewnić, że mój użytkownik ma DELETE i INSERT uprawnienia do mydb2 , a także SELECT uprawnienia do mydb1 .

Bazy danych na różnych serwerach wydają się bardziej skomplikowane.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Załaduj obraz do C#, a następnie wstaw go do tabeli MySQL

  2. Przewodnik po projektowaniu bazy danych dla biuletynu w MySQL

  3. MySQL 5.6.10 InnoDB nie może utworzyć tabeli, ponieważ tabela już istnieje

  4. Jak przekazać tabelę jako parametr do MySqlCommand?

  5. parametr other_user_id nie działa w czasie wykonywania, nie dlaczego