我正在学习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。 另外,我想知道保存点的用途是什么?假设我在事务中使用保存点,以便在事务失败后可以回滚到上次成功的事务保存点。交易因失败而终止后会发生什么?从那时起保存点会起什么作用? 谢谢!