跨库事务

我不是方头捷达 发布于 2018/11/19 17:14
阅读 141
收藏 1

一个service操作不同库的dao,会发生跨库事务吗,如果异常能不能正常回滚,事务加在service层

加载中
1
DeMoNHaDeS
DeMoNHaDeS

如果是跨数据库实例肯定不支持。

如果在同一实例上跨库的话应该可以支持,最好还是测试一下框架是否支持。mysql的事务本身是支持的。

mysql> select * from test1.test;
+----+------+
| id | name |
+----+------+
|  1 | aaa  |
+----+------+
1 row in set

mysql> select * from test2.test;
+----+------+
| id | name |
+----+------+
|  1 | aaa  |
+----+------+
1 row in set

mysql> START TRANSACTION;
Query OK, 0 rows affected

mysql> delete from test1.test where id = 1;
Query OK, 1 row affected

mysql> delete from test2.test where id = 1;
Query OK, 1 row affected

mysql> select * from test1.test;
Empty set

mysql> select * from test2.test;
Empty set

mysql> rollback;
Query OK, 0 rows affected

mysql> select * from test1.test;
+----+------+
| id | name |
+----+------+
|  1 | aaa  |
+----+------+
1 row in set

mysql> select * from test2.test;
+----+------+
| id | name |
+----+------+
|  1 | aaa  |
+----+------+
1 row in set

 

1
湖水没了
湖水没了

如果是手动开启事务 提交事务 回滚事务肯定可以按照你的逻辑做

如果是基于注解 切面等方式 进入service的时候 就已经开启事务了 你后续切换数据库不影响事务中的数据库连接

返回顶部
顶部