繁体   English   中英

使用InnoDB引擎的mysql中的事务即使在事务未完成的情况下也会保存?

[英]Transactions in mysql with InnoDB engine getting saved even with incomplete transaction?

我正在学习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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM