我有一个包含很多行(大约 10k 行)的现有表,其中两列作为主键,因为它充当其他两个表之间多对多关系的中间表。
对于新要求,我需要分配添加新列(例如id
),该列必须是具有自动增量值的主键。我运行了以下查询:
ALTER TABLE `momento_distribution` ADD `id` INT( 11 ) NOT NULL FIRST;
ALTER TABLE `momento_distribution` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` );
第一个查询成功运行,但第二个查询生成以下错误:
1062 - Duplicate entry '0' for key 'PRIMARY'
原因很明显,新列id
的默认值是 0,主键不能有重复值。
现在,在我可以运行第二个查询之前,我需要为新列设置增量值,如 1,2,3...
我知道,在 Oracle 中,这可以通过 rowid 来完成。MySQL 也有其等效的@rowid。有人可以建议一个查询来将@rowid 设置为 column 的列值id
吗?
请注意:这必须通过查询来完成,因为我无法手动更改 10000 行。