在mysql innodb事务中,我期望重复键错误导致回滚。它不会,它只是抛出一个错误,并继续到下一个命令。一旦COMMIT命令到达,事务将被提交,sans重复键导致命令。重复密钥错误不取消/回滚mysql事务
这是预期的行为?如果是这样,那么如何设置它,以便在出现这样的错误时事务被回滚而不是提交?
测试环境:
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
参见:http://dev.mysql.com/doc/refman/5.0/en/innodb-error-handling。 html – 2013-06-11 20:23:48