1

我有一些关于 MySQL InnoDB 引擎事务的快速问题。我有一些这种格式的数据库(db_1、db_2、db_3 等)

我想插入/更新到事务中的任何数据库,如下所示,

BEGIN
USE DB_1;
//Insert / Update into DB_1 tables

USE DB_2;
//Insert / Update into DB_2 tables
COMMIT

可以吗?还是我需要为每个数据库放置单独的事务,如下所示,

BEGIN
USE DB_1;
//Insert / Update into DB_1 tables
COMMIT

BEGIN
USE DB_2;
//Insert / Update into DB_2 tables
COMMIT

与第一种方法一样,在单个事务中切换多个数据库是否有任何问题。事务数据库级别还是全局级别?

4

1 回答 1

2

这应该有效。显然DB_1DB_2在同一台服务器上。如果它们将在不同的服务器上,那么集群就是你的未来!:-)

您可能会考虑限定表的名称而不是使用USE语句。这可能会简化您的逻辑。

例如,

  BEGIN;
  INSERT INTO DB_1.mytable (myid, mycol) VALUES (1,'a');
  INSERT INTO DB_2.histable (hisid, hiscol) VALUES (1,'b');
  SELECT whatever
    FROM DB_1.mytable AS m
    JOIN DB_2.histable AS h ON m.myid = h.hisid;
  COMMIT;
于 2013-11-01T12:54:32.167 回答