MySQL — транзакция с участием таблиц в 3 разных базах данных?

#mysql

#mysql

Вопрос:

В MySQL у меня есть три разные базы данных — давайте назовем их A , B и C .

Возможно ли выполнить транзакцию с участием таблиц, которые находятся во всех трех базах данных ( A , B , C )? (все базы данных находятся на одном сервере)

Ответ №1:

Да, вы можете. Это демонстрационный запрос:

 select (SELECT count(*) FROM `A`.`tableInA`),
       (SELECT count(*) FROM `B`.`tableInB`),
       (SELECT count(*) FROM `C`.`tableInC`);
  

Еще один демонстрационный запрос:

 SELECT * FROM `A`.`tableInA` 
      where fieldInA in (SELECT fieldInAB FROM `B`.`tableInB` 
            where fieldInB in (select fieldInBC from `C`.`tableInC`));
  

Комментарии:

1. @Harry Joy: спасибо. вы продемонстрировали запрос с использованием SELECT . Мой вопрос был в том, возможно ли выполнить TRANSACTION с участием (скажем) 3 баз данных?

2. @user540009: да, ты можешь. Попробуйте и дайте мне знать.

3. @Harry Joy: спасибо. В таком случае имеет ли значение, какой движок используется для таблиц ( MyISAM / InnoDB )?

4. @user540009: все должно быть в одном и том же.

5. @Harry Joy: имеется в виду, что все таблицы, участвующие в транзакции, должны иметь один и тот же движок (скажем, InnoDB )?