如何将主键添加到MySQL表?

这是我试过的,但是失败了:

alter table goods add column `id` int(10) unsigned primary AUTO_INCREMENT; 

有没有人有小费?

添加列后,您可以随时添加主键:

ALTER TABLE goods ADD PRIMARY KEY(id)

至于为什么你的脚本不能正常工作,你需要指定PRIMARY KEY ,而不仅仅是单词PRIMARY

 alter table goods add column `id` int(10) unsigned primary KEY AUTO_INCREMENT; 

如果你的表格比较大,最好不要使用声明:

 alter table goods add column `id` int(10) unsigned primary KEY AUTO_INCREMENT; 

因为它会复制临时表中的所有数据,并将其复制回来。 最好手动。 重命名你的表格:

 rename table goods to goods_old; 

使用主键和所有必要的索引创build新表:

 create table goods ( id int(10) unsigned not null AUTO_INCREMENT ... other columns ... primary key (id) ); 

将旧表中的所有数据移入新的,禁用键和索引以加速复制:

– 使用MyISAM TABLES:

 SET UNIQUE_CHECKS=0; ALTER TABLE goods DISABLE KEYS; INSERT INTO goods (... your column names ...) SELECT ... your column names FROM goods_old; ALTER TABLE goods ENABLE KEYS; SET UNIQUE_CHECKS=1; 

要么

– 用于InnoDB TABLES:

 SET AUTOCOMMIT = 0; SET UNIQUE_CHECKS=0; SET FOREIGN_KEY_CHECKS=0; INSERT INTO goods (... your column names ...) SELECT ... your column names FROM goods_old; SET FOREIGN_KEY_CHECKS=1; SET UNIQUE_CHECKS=1; COMMIT; SET AUTOCOMMIT = 1; 

将PK添加到约20000行的表中需要2 000秒。

现有的列

如果要将主键约束添加到现有列,则以前列出的所有语法都将失败。

要将主键约束添加到现有列,请使用以下格式:

 ALTER TABLE `goods` MODIFY COLUMN `id` INT(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT; 

这段代码在我的mysql数据库中工作:

 ALTER TABLE `goods` ADD COLUMN `id` INT NOT NULL AUTO_INCREMENT, ADD PRIMARY KEY (`id`); 

尝试这个,

 alter table goods add column `id` int(10) unsigned primary key auto_increment 

不知道这个事情是否给别人,但我更喜欢把id表放到数据库的第一列。 其语法是:

 ALTER TABLE your_db.your_table ADD COLUMN `id` int(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT FIRST; 

这只是第一个答案略有改善。 如果你想让它处于不同的位置,那么

 ALTER TABLE unique_address ADD COLUMN `id` int(10) UNSIGNED PRIMARY KEY AUTO_INCREMENT AFTER some_other_column; 

HTH,-ft

删除引号才能正常工作…

更改表货物添加列id int(10)unsigned primary KEY AUTO_INCREMENT;

 ALTER TABLE GOODS MODIFY ID INT(10) NOT NULL PRIMARY KEY;