7

MySQL に主キーを持つテーブルがあります。

mysql> desc gifts;
+---------------+-------------+------+-----+---------+-------+
| Field         | Type        | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| giftID        | int(11)     | NO   | PRI | NULL    |       |
| name          | varchar(80) | YES  |     | NULL    |       |
| filename      | varchar(80) | YES  |     | NULL    |       |
| effectiveTime | datetime    | YES  |     | NULL    |       |
+---------------+-------------+------+-----+---------+-------+

しかし、auto_increment にしたかったのです。

次のステートメントは失敗しました。機能するようにどのように変更できますか?ありがとう

mysql> alter table gifts modify giftID int primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined
4

1 に答える 1

10

primary key属性をオフのままにします:

ALTER TABLE gifts MODIFY giftID INT AUTO_INCREMENT;

などの特定の列属性PRIMARY KEYは、列の正確なプロパティではなく、他のもののショートカットです。PRIMARY KEYたとえば、 とマークされた列はPRIMARYインデックスに配置されます。PRIMARYさらに、インデックス内のすべての列にNOT NULL属性が与えられます。(余談ですが、複数列の主キーを使用するには、複数の列属性ではなく別の制約句を使用する必要がありPRIMARY KEYます。) 列は既にPRIMARYインデックスに含まれているため、列を変更するときに再度指定する必要はありません。属性SHOW CREATE TABLE gifts;を使用した場合の影響を確認してください。PRIMARY KEY

于 2010-04-24T11:57:33.347 に答える