1

このようなテーブルがあります

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;

私が知る限り、ロールバックは自動インクリメントには影響しません。したがって、新しい値を挿入すると、自動インクリメントは 1 ではなく 2 になります。しかし、「Agatha Christie」を再度挿入しようとすると、次の問題が発生します。

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

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

それは私が期待したものではありません。私はこれを期待していました:

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

どうしたの?

4

1 に答える 1

1

MyISAM エンジンを使用している可能性があります。実行show create seudonimos;して確認してください。

于 2011-08-02T20:47:09.760 に答える