簡體   English   中英

將 MySQL 列更改為 AUTO_INCREMENT

[英]Alter a MySQL column to be AUTO_INCREMENT

我試圖修改一個表,使其主鍵列AUTO_INCREMENT事后。 我嘗試了以下 SQL,但收到了語法錯誤通知。

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

我做錯了什么還是不可能?

+--------------------+
| VERSION()          |
+--------------------+
| 5.0.75-0ubuntu10.2 |
+--------------------+
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

Roman 是對的,但請注意 auto_increment 列必須是 PRIMARY KEY 或 UNIQUE KEY 的一部分(並且在幾乎 100% 的情況下,它應該是構成 PRIMARY KEY 的唯一列):

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

就我而言,它僅在我放置not null時才有效。 我認為這是一個限制。

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

執行此操作的 SQL 將是:

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

您的 SQL 可能不起作用的原因有幾個。 首先,您必須重新指定數據類型(在本例中為INT )。 此外,您嘗試更改的列必須被索引(它不必是主鍵,但通常這是您想要的)。 此外,每個表只能有一個AUTO_INCREMENT列。 因此,您可能希望運行以下 SQL(如果您的列未編入索引):

ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY;

您可以在 MySQL 文檔中找到更多信息: http : //dev.mysql.com/doc/refman/5.1/en/alter-table.html了解修改列語法和http://dev.mysql.com/doc /refman/5.1/en/create-table.html有關指定列的更多信息。

AUTO_INCREMENT是列數據類型的一部分,您必須再次為列定義完整的數據類型:

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

(以int為例,您應該將其設置為該列之前的類型)

您必須在auto_increment指令之前指定列的類型,即ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT

你可以這樣做:

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;

您可以使用以下查詢使 document_id 自動遞增

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

最好也制作 document_id 主鍵

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY;

AUTO_INCREMENT是列數據類型的一部分,您必須再次為列定義完整的數據類型:

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

(以int為例,您應該將其設置為該列之前的類型)

如果以上都不起作用,請嘗試此操作。 這就是我在 MYSQL 中所做的,是的,您需要將列名 (document_id) 寫入兩次。

ALTER TABLE document
CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ;

下面的語句有效。 請注意,您需要再次提及列名的數據類型(重新聲明該列之前的數據類型)。

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;

要修改 mysql 中的列,我們使用 alter 和 modify 關鍵字。 假設我們創建了一個表,如下所示:

create table emp(
    id varchar(20),
    ename varchar(20),
    salary float
);

現在我們想將列 id 的類型修改為具有自動增量的整數。 您可以使用以下命令執行此操作:

alter table emp modify column id int(10) auto_increment;
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;

上一個表語法:

CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);

要將 TransactionId 更改為自動遞增,請使用此查詢

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;

像這樣:

alter table document modify column id int(11) auto_increment;

同時設置 column 為主鍵和 auto_increment:

  mysql> ALTER TABLE persons MODIFY COLUMN personID INT auto_increment PRIMARY KEY;
    Query OK, 10 rows affected (0.77 sec)
    Records: 10  Duplicates: 0  Warnings: 0

    mysql>

當您再次重新定義列時,您必須再次指定數據類型並將 auto_increment 添加到它,因為它是數據類型的一部分。

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

請嘗試以下操作:

ALTER TABLE table_name MODIFY COLUMN id datatype auto_increment;

您可以通過以下查詢將 atuto_increment 約束應用於數據列:

ALTER TABLE customers MODIFY COLUMN customer_id BIGINT NOT NULL AUTO_INCREMENT;

但是,如果列是外鍵約束的一部分,您很可能會收到錯誤消息。 因此,建議使用以下查詢關閉foreign_key_checks:

SET foreign_key_checks = 0;

因此,請改用以下查詢:

SET foreign_key_checks = 0;
ALTER TABLE customers MODIFY COLUMN customer_id BIGINT NOT NULL AUTO_INCREMENT;
SET foreign_key_checks = 1;

由於SQL標記附加到問題,我真的認為所有答案都錯過了一個主要觀點。

SQL Server 中不存在MODIFY命令,因此運行時會出現錯誤

ALTER TABLE Satellites MODIFY COLUMN SatelliteID INT auto_increment PRIMARY KEY;

在此處輸入圖片說明

在這種情況下,您可以添加新列作為INT IDENTITY

ALTER TABLE Satellites
   ADD ID INT IDENTITY
       CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED;

或者


使用此方法用增量數字填充現有的空索引,
 DECLARE @id INT SET @id = 0 UPDATE Satellites SET @id = SatelliteID = @id + 1

使用以下查詢:

ALTER TABLE YourTable DROP COLUMN IDCol

ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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