添加不是主键SQL的自动增量列

时间:2014-07-01 18:15:20

标签: mysql sql

我有一个跟踪磁盘上文件的表。我将文件路径设置为主键,因为这是唯一的数据。我想添加一个自动增量但不是主键的新列。可以这样做吗?我想要这个列,所以我可以使用id而不是大的长文件路径字符串来访问数据。

ALTER TABLE `Media`  ADD `ID` INT NOT NULL AUTO_INCREMENT

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

3 个答案:

答案 0 :(得分:4)

更改表结构,以便将文件路径声明为unique而不是primary。然后添加一个自动递增的主键。

ALTER TABLE `Media` DROP PRIMARY KEY, 
  ADD UNIQUE KEY (`FilePath`), 
  ADD `ID` INT AUTO_INCREMENT FIRST, 
  ADD PRIMARY KEY (`ID`);

使用整数主键而不是字符串是有好处的。例如,辅助索引将使用主键来访问该行,因此拥有完整的文件路径只会使索引大于它需要的值。

答案 1 :(得分:1)

ALTER TABLE
        `Media`
ADD     `ID` INT NOT NULL UNIQUE AUTO_INCREMENT

答案 2 :(得分:-1)

你必须插入这样的行:

SET @ID = 0;

INSERT INTO Media  (ID,  SomeColumn) VALUES  (@ID := @ID + 1, 'Some Text');