我试图修改一个表,使其主键列AUTO_INCREMENT后的事实。我已经尝试了下面的SQL,但得到了一个语法错误通知。
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
是我做错了什么还是这不可能?
+--------------------+ | VERSION() | +--------------------+ | 5.0.75-0ubuntu10.2 | +--------------------+
我试图修改一个表,使其主键列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 NOT NULL AUTO_INCREMENT;
其他回答
你必须在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;
由于SQL标签附在这个问题上,我真的认为所有的答案都错过了一个主要的点。
MODIFY命令在SQL server中不存在,所以当你运行
修改COLUMN的主键
在这种情况下,您可以将新列添加为INT IDENTITY
ALTER TABLE Satellites
ADD ID INT IDENTITY
CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED;
OR
DECLARE @id INT
SET @id = 0
UPDATE Satellites SET @id = SatelliteID = @id + 1
AUTO_INCREMENT是列数据类型的一部分,你必须再次定义该列的完整数据类型:
ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT
(以int为例,您应该将其设置为列之前的类型)
您可以使用以下查询使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;