2016-05-16 89 views
-1

我有已填充了120条记录,我曾尝试下面的SQL查询现有的产品表:现有表中添加自动递增的主键 - SQL

ALTER TABLE product ADD product_id 
    INT PRIMARY KEY AUTO_INCREMENT 

但它给我的错误:

Error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

+0

你试过哪个查询? – hjpotter92

+0

ALTER TABLE产品ADD product_id INT PRIMARY KEY AUTO_INCREMENT; –

+0

'ALTER TABLE product ADD列product_id INT PRIMARY KEY AUTO_INCREMENT;' –

回答

-1

每个表格只能有一个自动增量字段。但是,您可以根据自动增量字段计算字段。或者,你可以有一个int字段,通过前端代码或触发器来管理序列。也可以在SQL Server中使用sequence

CREATE SEQUENCE MySequence START WITH 100; 

CREATE TABLE MyTable 
(
    RealIdentity INT IDENTITY(1,1), 
    RandomCol NVARCHAR(100), 
    FakeIdentity INT DEFAULT NEXT VALUE FOR MySequence 
); 

更新 - MySQL的方式

我只注意到你的问题是功能标签为MySQL。以上答案适用于MS SQL。以下是你如何在MySQL中做同样的事情。

How do I create a sequence in MySQL?

MySQL equivalent of Oracle's SEQUENCE.NEXTVAL

0

朋友 如果试图这样做在MSSQL那么你的脚本将是这个。 假设你的表是低于

create table product 
(
name varchar(20), 
product_type varchar(20) 
) 

,并假设你输入一些记录在这个表之后要增加一列,名称与PRODUCT_ID自动递增和主键。然后你使用下面这个脚本

alter table product add product_ID int primary key identity(1,1) 

假设这将对你有帮助。

0

这是变通

  • 创建一个简单的列与自动增量
  • 浏览表,并再次使这个新添加的列作为主键

你完成了!

:)感谢那些不在Stackoverflow的家伙