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

Posted

技术标签:

【中文标题】如何在 SQL Server 数据库中添加 auto_increment 主键?【英文标题】:How do I add a auto_increment primary key in SQL Server database? 【发布时间】:2011-10-10 07:14:11 【问题描述】:

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

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

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

我已经创建了主键,甚至将其设置为非空。但是,我无法设置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

【问题讨论】:

为什么不能简单地添加一个新的 IDENTITY 列? ***.com/questions/4862385/… 出于兴趣,auto_increment 语法从何而来?是访问吗? @Kieren: auto_increment 用于 mysql(也可能在其他地方)。 Auto increment primary key in SQL Server Management Studio 2012的可能重复 【参考方案1】:

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

【讨论】:

完美!谢谢你的帮助。一旦计时器允许我接受答案,我就会接受。 :D 可以,但是正确的语法是没有第二个“ADD”,它是:ALTER TABLE MyTable ADD MytableID int NOT NULL IDENTITY (1,1), CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (MyTableID) 【参考方案2】:

你可以试试这个... 更改表 Your_Table ADD table_ID int NOT NULL PRIMARY KEY auto_increment;

【讨论】:

【参考方案3】:

如果你有专栏,那就很容易了。

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


属性

身份列

【讨论】:

【参考方案4】:

在 SQL Server 2008 中:

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

【讨论】:

【参考方案5】:

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

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

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

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

然后删除原始表。

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

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

【讨论】:

这个创建表的语法是良好的实践,正如this 在 cmets 中的帖子的作者所建议的那样,希望对某人有所帮助。【参考方案6】:

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

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

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

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

那么以后如果您希望能够编写这种事情的脚本,您可以右键单击刚刚修改的表并选择

"SCRIPT TABLE AS" --> 创建于

以便您自己查看执行此操作的正确语法。

【讨论】:

以上是关于如何在 SQL Server 数据库中添加 auto_increment 主键?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我添加到项目中的 SQL Server Express 数据库中创建用户?

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

如何在 SQL Server 表中添加“最后修改”和“创建”列?

如何在 SQL Server 2008 R2 中添加分析服务器?

如何在 SQL Server 2008 R2 表中添加“上次更新”列?

sql server如何添加外键