在 mysql innodb 事务中,我预计重复键错误会导致回滚。它没有,而是简单地抛出一个错误并继续执行下一个命令。一旦到达 COMMIT 命令,事务将被提交,没有重复键导致命令。
这是预期的行为吗?如果是这样,如何设置它以便在发生此类错误时回滚而不是提交事务?
测试环境:
CREATE TABLE `test` (
`id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
BEGIN;
INSERT INTO test VALUES (5);
INSERT INTO test VALUES (5);
COMMIT;
预期结果:表test
为空
实际结果:表test
包含一条值为 5 的记录