我有一个跟踪磁盘上文件的表。我将文件路径设置为主键,因为这是唯一的数据。我想添加一个自动增量但不是主键的新列。可以这样做吗?我想要这个列,所以我可以使用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
答案 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');