我正在学习RDBMS中的事务,我想用这段代码来测试它:
DELIMITER $$
START TRANSACTION;
INSERT INTO test4 VALUES (0,2);
INSERT INTO test4 VALUES (2,2);
INSERT INTO test4 VALUES (3,2);
INSERT INTO test4 VALUES (4,2);
INSERT INTO est4 VALUES (4,2);
INSERT INTO test4 VALUES (6,2);
INSERT INTO test4 VALUES (7,2);
INSERT INTO test4 VALUES (8,2);
INSERT INTO test4 VALUES (9,2);
INSERT INTO test4 VALUES (10,2);
INSERT INTO test4 VALUES (11,2);
INSERT INTO test4 VALUES (12,2);
END;
DELIMITER ;
我故意让第5个插入语句不正确,这样我就可以测试事务是如何工作的。当我执行查询时,MySQL不出所料地抛出了一个错误,但直到第4次插入为止的所有查询仍然保存在表中!为什么会这样?是的,我使用的是支持事务的InnoDB引擎。我使用的是14.14版本的MySQL。另外,我想知道保存点有什么用?假设我在事务中使用保存点,以便在事务后失败的情况下回滚到最后一个成功的事务保存点。事务因失败而终止后会发生什么?保存点从那时起玩什么卷轴?谢谢
您可以检查自动提交:http://dev.mysql.com/doc/refman/5.0/en/commit.html