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

我有一个表设置,当前没有主键。 我需要做的就是添加NVARCHAR

我正在使用NVARCHAR数据库。 我知道这不可能在单个命令中完成,但是我尝试的每个命令都会不断返回语法错误。

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

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

我试过了:

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,因为它不允许我将NOT NULL设置为int

dcp3450 asked 2019-11-18T01:59:18Z
6个解决方案
111 votes

可以在单个命令中完成。 您需要为“自动编号”设置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和IDENTITY

gbn answered 2019-11-18T01:59:54Z
21 votes

如果表已包含数据,并且您想将其中一列更改为标识:

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

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

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

然后放下原始表。

最后使用sp_renameTempTable重命名为您想要的名称:

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

Andreas Ågren answered 2019-11-18T02:00:53Z
13 votes

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

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

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

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

然后在将来,如果您希望能够只编写此类脚本,则可以右键单击刚修改的表,然后选择

“ SCRIPT TABLE AS”->创建到

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

ChrisCamp answered 2019-11-18T02:01:56Z
1 votes

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

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


特性:

enter image description here

身份列:

enter image description here

gustavo herrera answered 2019-11-18T02:02:40Z
0 votes

在SQL Server 2008中:

  • 右键点击表格
  • 去设计
  • 选择数值数据类型
  • 将名称添加到新列
  • 将身份规范设置为“是”
Chandan Deb answered 2019-11-18T02:03:37Z
-1 votes

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

Wayne Salazar answered 2019-11-18T02:04:01Z
translate from https://stackoverflow.com:/questions/6777734/how-do-i-add-a-auto-increment-primary-key-in-sql-server-database