我用struts写了一个小软件 ,但是 关于 mysql的rollback机制 不太懂, 谁能教教我?
发布网友
发布时间:2022-04-09 04:14
我来回答
共2个回答
热心网友
时间:2022-04-09 05:44
MySQL
默认情况下,MySQL采用autocommit模式运行。这意味着,当执行更新表的语句之后,MySQL立刻把更新存储到磁盘中。
事务安全型的存储引擎(如InnoDB, BDB或NDB簇),
使用以下语句禁用autocommit模式:
SET AUTOCOMMIT=0;
使用START TRANSACTION,autocommit仍然被禁用,直到COMMIT或ROLLBACK结束事务为止。然后autocommit模式恢复到原来的状态。
mysql> select * from test_main //
+----+-------+
| id | value |
+----+-------+
| 1 | ONE |
| 2 | TWO |
| 3 | THREE |
+----+-------+
3 rows in set (0.00 sec)
mysql> START TRANSACTION;
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO test_main VALUES(4, 'FOUR') //
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO test_main VALUES(4, 'FOUR') //
ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'
mysql> ROLLBACK//
Query OK, 0 rows affected (0.01 sec)
mysql> select * from test_main //
+----+-------+
| id | value |
+----+-------+
| 1 | ONE |
| 2 | TWO |
| 3 | THREE |
+----+-------+
3 rows in set (0.00 sec)
热心网友
时间:2022-04-09 07:02
简单的说 就是几张不同的表 你同时提交,如果前面提交的数据正确,而后面提交的数据错误,
正常来说,前面会提交成功。rollback的作用就是 一定要全部正确才会提交,任何一张错误都会是事物回滚,不再提交。