如何在 SQL 2008 R2 的表中创建 AutoCounter 列?
Posted
技术标签:
【中文标题】如何在 SQL 2008 R2 的表中创建 AutoCounter 列?【英文标题】:How do I Create an AutoCounter Column in a Table in SQL 2008 R2? 【发布时间】:2011-05-27 08:05:01 【问题描述】:“数据类型”下拉菜单中没有任何内容指示自动计数器。
我选择了int
,我假设在其他地方有一个设置可以将它变成一个自动计数器。
这个想法是为我的主键设置一个 100% 唯一的 ID,每次添加一行时,它都会获得分配给它的下一个可用 ID 号。
http://img64.imageshack.us/img64/2472/primarykey.png
【问题讨论】:
【参考方案1】:您所追求的在 SQL Server 术语中称为 IDENTITY。
列必须是数字数据类型 (INT typically, check the range of values to what suits your needs),然后才能将列设置为 IDENTITY
- 您可以在屏幕截图中的 表格设计器 下看到该列表。每个表只能有一个 IDENTITY 列——这将在 SQL Server 2011 开始支持序列时发生变化。
【讨论】:
【参考方案2】:CREATE TABLE dbo.mytable
(
[MY_ID] int identity (1,1) PRIMARY KEY CLUSTERED NOT NULL,
[LAST_NAME] [nvarchar](50) NULL,
[FIRST_NAME] [nvarchar](30) NULL
)
当然如果不是主键,则不需要主键集群部分。
(1,1) 部分表示编号将从 1 开始并以 1 递增。但不要期望身份永远不会有间隙。如果插入回滚或稍后删除记录,则不会填充间隙。您也可以从您选择的任何数字开始,甚至可以增加不同的数字,但 (1,1) 是默认值,并且是最常见的值。
最好使用脚本创建表(尤其是更改它们),然后您可以像任何其他代码一样将它们提交到源代码控制,并准备好部署它们。
【讨论】:
【参考方案3】:将其标记为主键并将标识列设置为是。这将使其自动递增。
【讨论】:
作为主键与 IDENTITY 属性无关。 而且他已经把它标记为如图所示的主键了:) 我不知道为什么我一直认为身份和主键是链接的。我想这只是因为他们经常齐头并进。 最常见的主键是代理/人工键。以上是关于如何在 SQL 2008 R2 的表中创建 AutoCounter 列?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 7 (Windows 2008 R2) 中创建 RAM 驱动器?
SQL - 如何使用 MS SQL 2008 R2 备份数据库并导出为 MDF 文件
如何使用 SQL Server Management Studio (2008) 在 SQL Server Compact Edition 中创建列