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