默认情况下,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)