[英]How to add AUTO_INCREMENT to an existing column?
如何將auto_increment
添加到 MySQL 表的現有列?
我認為您想按照ALTER TABLE
命令的描述MODIFY
列。 它可能是這樣的:
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;
刪除備份表:
DROP TABLE backupTable;
我希望這是有用的!
有關使用 CREATE LIKE 復制表的更多信息:
Alter table table_name modify column_name datatype(length) AUTO_INCREMENT PRIMARY KEY
您應該將主鍵添加到自動增量,否則您會在 mysql 中出錯。
只需在列中添加 auto_increment Constraint 或 MODIFY COLUMN :-
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;
如果您想更改非空表的 AUTO_INCREMENT 屬性,這對我有用:
1.) 將整個表導出為 .sql 文件
2.)導出后刪除表
2.) CREATE_TABLE 命令是否需要更改
3.) 從 .sql 文件中執行 CREATE_TABLE 和 INSERT_INTO 命令
...等中提琴
我設法用以下代碼做到了這一點:
ALTER TABLE `table_name`
CHANGE COLUMN `colum_name` `colum_name` INT(11) NOT NULL AUTO_INCREMENT FIRST;
這是我可以使列自動遞增的唯一方法。
INT(11) 顯示最大 int 長度為 11,您可以根據需要跳過它。
Alter table table_name modify table_name.column_name data_type AUTO_INCREMENT;
例如:
Alter table avion modify avion.av int AUTO_INCREMENT;
如果您有 FK 約束並且不想從表中刪除約束。 使用“索引”而不是主要的。 然后您將能夠將其類型更改為自動遞增
我在第一列中有現有數據,它們是 0。 首先,我使第一列可以為空。 然后我將該列的數據設置為空。 然后我將該列設置為索引。 然后我將它設為主鍵並開啟自動遞增。 這是我在上面使用另一個人的答案的地方:
ALTER TABLE `table_name` CHANGE COLUMN `colum_name` `colum_name` INT(11) NOT NULL AUTO_INCREMENT FIRST;
這將數字添加到此表的所有行,從一開始。 如果我先運行上面的代碼,它就不起作用,因為所有的值都是 0。 在使其自動遞增之前,還需要使其成為索引。 接下來,我將該列設為主鍵。
這在我的情況下有效,如果您想將列屬性更改為已經有一些數據的自動增量
1.GO結構,select列要改。 2.選擇列后,從下面的選項中選擇主鍵。 [1]: https://i.stack.imgur.com/r7w8f.png 3.然后使用alter方法將列屬性更改為自動遞增
這是為了更改添加 PRIMARY 鍵的列:
ALTER TABLE `schema_name`.`table_name`
CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ,
ADD UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
ADD PRIMARY KEY (`id`);
我從 MySQL Workbench 復制了它……我很好奇是否可以在一個命令中完成所有操作。 我對 SQL 有點生疏了。
如果您在特定模式中工作,則無需指定它。
上面的語句將創建索引,將列設置為 PRIMARY KEY 以及只需一個查詢。
KEEP IN MIND:同一列中不能有重復的值,如果有,該語句將無法提交。
ALTER TABLE Table name ADD column datatype AUTO_INCREMENT,ADD primary key(column);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.