Ошибка дублирования уникального ключа после отката в MySQL - PullRequest
1 голос
/ 03 августа 2011

У меня есть такая таблица

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. Но если я попытаюсь снова вставить Агату Кристи, у меня возникнет следующая проблема:

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

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

Это не то, что я ожидал. Я ожидал этого:

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

Что не так?

1 Ответ

1 голос
/ 03 августа 2011

Вы, вероятно, используете движок MyISAM ... Запустите show create seudonimos; и посмотрите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...