如何添加auto_increment
到MySQL表的现有列?
Answers:
我认为您想MODIFY
按照ALTER TABLE
命令中的说明进行操作。可能是这样的:
ALTER TABLE users MODIFY id INTEGER NOT NULL AUTO_INCREMENT;
在上面运行之前,请确保该id
列具有主索引。
在向具有数据的表中添加AUTO_INCREMENT的方法同时避免“重复输入”错误:
使用INSERT SELECT复制表和数据:
CREATE TABLE backupTable LIKE originalTable;
INSERT backupTable SELECT * FROM originalTable;
从originalTable中删除数据(以删除重复的条目):
TRUNCATE TABLE originalTable;
添加AUTO_INCREMENT和PRIMARY KEY
ALTER TABLE originalTable ADD id INT PRIMARY KEY AUTO_INCREMENT;
将数据复制回originalTable(不包括新创建的列(id),因为它将自动填充)
INSERT originalTable (col1, col2, col3)
SELECT col1, col2,col3
FROM backupTable;
删除backupTable:
DROP TABLE backupTable;
我希望这是有用的!
有关使用CREATE LIKE复制表的更多信息:
originalTable
或者您出于其他原因关心ID号,那么我认为您不想使用此方法。
Alter table table_name modify column_name datatype(length) AUTO_INCREMENT PRIMARY KEY
您应该将主键添加到自动递增,否则在mysql中会出错。
只需在列或MODIFY COLUMN中添加auto_increment约束即可:-
ALTER TABLE `emp` MODIFY COLUMN `id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST;
或先添加一列,然后将其更改为-
1. Alter TABLE `emp` ADD COLUMN `id`;
2. ALTER TABLE `emp` CHANGE COLUMN `id` `Emp_id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST;
id
列需要的INDEX
,但不一定是UNIQUE
或PRIMARY KEY
。一个纯文本INDEX
将允许您手动添加一个dup值(您不会这样做),但除此之外,它也一样。
Alter table table_name modify table_name.column_name data_type AUTO_INCREMENT;
例如:
Alter table avion modify avion.av int AUTO_INCREMENT;
第一列中有现有数据,它们是0。首先,我将第一列设置为可空。然后,我将列的数据设置为null。然后,我将该列设置为索引。然后,我将其设为打开自动递增功能的主键。这是我上面其他人回答的地方:
ALTER TABLE `table_name` CHANGE COLUMN `colum_name` `colum_name` INT(11) NOT NULL AUTO_INCREMENT FIRST;
这将数字添加到该表的所有行(从1开始)。如果我先运行上面的代码,那是行不通的,因为所有值都是0。并且在使其自动递增之前还需要使其成为索引。接下来,我将该列作为主键。
SET sql_mode='NO_AUTO_VALUE_ON_ZERO';
,如果由于某种原因有多个零而无法使用,则可以使用行计数器将所有行显式设置为新数字。
ALTER TABLE Table name ADD column datatype AUTO_INCREMENT,ADD primary key(column);
ALTER TABLE tbl AUTO_INCREMENT = 100;