如何在SQL Server数据库中添加auto_increment主键?

时间:2011-07-21 14:31:38

标签: sql sql-server auto-increment

我有一个表设置,目前没有主键。我需要做的只是添加primary key, no null, auto_increment

我正在使用Microsoft SQL Server数据库。我知道它不能在单个命令中完成,但我尝试的每个命令都会返回语法错误。

编辑---------------

我创建了主键,甚至将其设置为非null。但是,我无法设置auto_increment

我试过了:

ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment
ALTER TABLE tableName MODIFY id NVARCHAR(20) auto_increment
ALTER TABLE tableName ALTER COLUMN id NVARCHAR(20) auto_increment

我正在使用NVARCHAR因为它不允许我在int下设置NOT NULL

6 个答案:

答案 0 :(得分:110)

可以在一个命令中完成。您需要为“自动编号”设置IDENTITY属性:

ALTER TABLE MyTable ADD mytableID int NOT NULL IDENTITY (1,1) PRIMARY KEY

更确切地说,要设置命名表级约束:

ALTER TABLE MyTable
   ADD MytableID int NOT NULL IDENTITY (1,1),
   CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID)

请参阅MSDN上的ALTER TABLE and IDENTITY

答案 1 :(得分:21)

如果表已包含数据,并且您希望将其中一列更改为identity:

首先创建一个具有相同列的新表并指定主键 - kolumn:

create table TempTable
(
    Id int not null identity(1, 1) primary key
    --, Other columns...
)

然后使用标准insert语句将原始表中的所有行复制到新表中。

然后放下原始表格。

最后使用TempTablesp_rename重命名为您想要的任何内容:

http://msdn.microsoft.com/en-us/library/ms188351.aspx

答案 2 :(得分:13)

您还可以通过SQL Server Management Studio执行此操作。

  

右键点击您选择的表格 - >修改

     

右键单击要设置为PK的字段 - >设置主键

     

在“列属性”下,将“标识规范”设置为“是”,然后指定起始值和增量值。

然后将来如果你想能够编写这类东西,你可以右键点击你刚刚修改过的表格并选择

  

“SCRIPT TABLE AS” - >创建

这样您就可以自己查看执行此操作的正确语法。

答案 3 :(得分:1)

如果你有专栏,这很容易。

使用设计器,您可以将列设置为标识(1,1):右键单击表格→设计→部分左侧(右键单击)→属性→在标识列中,选择#column。

属性

enter image description here

标识栏

enter image description here

答案 4 :(得分:0)

在SQL Server 2008中:

  • 右键单击表
  • 转到设计
  • 选择数值数据类型
  • 将名称添加到新列
  • 将身份规范设为“是”

答案 5 :(得分:-1)

你可以尝试这个...... ALTER TABLE Your_Table  ADD table_ID int NOT NULL PRIMARY KEY auto_increment;