如何将主键添加到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;