mysql 多个表 事务回滚_MySql可以在多个表上回滚SQL事务吗?

bd96500e110b49cbb3cd949968f18be7.png

I have searched the MySql documentation and found nothing. I have tried this ... the Rollback doesn't seem to cancel the inserts made in table1 and table2

Start Transaction;

INSERT INTO Table1(field1,field2) VALUES (value1, value2);

INSERT INTO Table2(field3,field4) VALUES (value3, value4);

INSERT INTO Table3(field5,field6) VALUES (value5, value6);

Rollback;

UPDATE: Thanks for all answers, but I forgot to tell that the 3rd statement throws an exception (Constraint Violation).

解决方案

As of current version of MySql v5.1 ... it does not support rollback over multiple tables ... That might change (I hope) in the near future!

是的,MySQL中的大事务可能会导致无法立即杀死一个SQL语句。当一个事务执行了大量的操作并且还没有提交或回滚时,这个事务被称为大事务。在这种情况下,您可能会遇到以下情况: 1. 当您尝试使用 `KILL` 命令终止一个正在执行的SQL语句时,MySQL将停止该语句的执行,但事务仍然保持活动状态。这意味着任何对数据库的更改都不会回滚,也不会释放由事务占用的资源。您可以使用 `SHOW PROCESSLIST` 命令来查看事务的状态。 2. 如果您使用 `KILL` 命令终止一个正在执行的大事务MySQL将尝试回滚事务中的所有更改。这可能需要一些时间,特别是如果事务涉及大量数据或复杂的操作。在此期间,您可能无法立即释放由该事务占用的资源。 为了避免这种情况,我们可以考虑以下几点: 1. 在执行大事务之前,请确保事务的操作是必要的,并尽量将事务拆分为较小的、更可管理的部分。 2. 使用合适的索引和优化查询,以减少事务执行时间和资源消耗。 3. 如果您必须终止一个正在执行的大事务,可以尝试使用 `KILL` 命令多次,以确保事务得到回滚并释放相关资源。 请注意,大事务可能会对数据库性能产生负面影响,并且在执行回滚操作时可能会导致数据库响应变慢。因此,在设计和执行事务时,需要谨慎考虑和测试,以确保数据库的稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值