[英]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;
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.