簡體   English   中英

如何將 AUTO_INCREMENT 添加到現有列?

[英]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 添加到包含數據的表同時避免“重復條目”錯誤的方法:

  1. 使用INSERT SELECT的數據表的副本:

     CREATE TABLE backupTable LIKE originalTable; INSERT backupTable SELECT * FROM originalTable;
  2. 從 originalTable 中刪除數據(刪除重復條目):

     TRUNCATE TABLE originalTable;
  3. 添加 AUTO_INCREMENTPRIMARY KEY

     ALTER TABLE originalTable ADD id INT PRIMARY KEY AUTO_INCREMENT;
  4. 將數據復制回 originalTable(包括新創建的列(id),因為它會被自動填充)

     INSERT originalTable (col1, col2, col3) SELECT col1, col2,col3 FROM backupTable;
  5. 刪除備份表:

     DROP TABLE backupTable;

我希望這是有用的!

有關使用 CREATE LIKE 復制表的更多信息:

復制 MySQL 表、索引和數據

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM