Mysql
 sql >> база данни >  >> RDS >> Mysql

Може ли съхранена процедура да работи с две различни бази данни? Какво ще кажете за два сървъра?

Ако говорим за две бази данни на един и същи сървър:да, съхранена процедура може да има достъп до друга база данни. Трябва да се уверите, че потребителят, с чиито привилегии се изпълнява процедурата, има необходимите привилегии за всяка база данни.

Да предположим например, че имате две бази данни на един и същи сървър, mydb1 и mydb2 и че всеки съдържа таблица с име messages със същата структура. Да предположим, че искате да добавите запомнена процедура към mydb2 което изпразва messages таблица в mydb2 и копира съдържанието на messages таблица в mydb1 . Можете да направите това:

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

Вижте как напълно квалифицирах таблиците с базите данни, към които принадлежат. Всъщност можете да възразите, че съм прекалено ревностен тук, защото уточнихме, че тази съхранена процедура ще принадлежи към mydb2 . Не е необходимо да добавям mydb2 . квалификатор. Ако съхранената процедура беше в mydb1 база данни, ще имам нужда от тези квалификатори, но обратното няма да имам нужда от mydb1 . където се появява.

За да мога да стартирам тази процедура (вероятно за да мога да я дефинирам?), трябва да се уверя, че потребителят ми има DELETE и INSERT привилегии на mydb2 , а също и SELECT привилегии на mydb1 .

Базите данни на различни сървъри звучат доста по-сложно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COUNT(id) срещу COUNT(*) в MySQL

  2. Най-бързият начин за подмножество - data.table срещу MySQL

  3. Уловима фатална грешка:Обектът от клас mysqli_stmt не може да бъде преобразуван в низ

  4. Как работи за всеки ред в тригерите в mysql?

  5. Не може да се добави ограничение за външен ключ към поле за дата