在mysql中回滚后重复唯一键错误

时间:2011-08-02 20:28:21

标签: mysql transactions unique-key

我有一张这样的表

mysql> describe seudonimos;
+--------------+------------------+------+-----+---------+----------------+
| Field        | Type             | Null | Key | Default | Extra          |
+--------------+------------------+------+-----+---------+----------------+
| id_seudonimo | int(11) unsigned | NO   | PRI | NULL    | auto_increment |
| seudonimo    | varchar(45)      | NO   | UNI | NULL    |                |
+--------------+------------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)

我们假设它是空的,因此自动增量为0.例如:

SET AUTOCOMMIT=0;
START TRANSACTION;
INSERT INTO seudonimos (seudonimo) VALUES ('Agatha Christie');
ROLLBACK;
SET AUTOCOMMIT=1;

据我所知,回滚不会影响自动增量。因此,如果我插入一个新值,则自动增量将为2而不是1.但如果我再次尝试插入'Agatha Christie',我会遇到以下问题:

INSERT INTO seudonimos (seudonimo) VALUES ('Agatha Christie');

#1062 - Duplicate entry 'Agatha Christie' for key 'seudonimo'

这不是我的预期。我期待这个:

+--------------+--------------------+
| id_seudonimo | seudonimo          |
+--------------+--------------------+
|            2 | Agatha Christie    |
+--------------+--------------------+

怎么了?

1 个答案:

答案 0 :(得分:1)

您可能使用MyISAM引擎...运行show create seudonimos;并查看。