SQL如何实现主键数字自动增加?(SQLSERVER)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL如何实现主键数字自动增加?(SQLSERVER)相关的知识,希望对你有一定的参考价值。

就是像ACCESS那样,若把逐渐设置成自动编号的话,那么在增加记录的时候,主键就能自动的增加.谢谢.十分感谢.

参考技术A create table tableName(
id int identity(1,1) primary key,
data varchar(50)
)
/*
identity(1,1)就是自动增加,第一个参数是种子值,第二个是增量值;
primary key是主键
*/本回答被提问者采纳
参考技术B 主要是在数据库中设置该字段属性,设置为自动增长列,自增为1即可。 参考技术C 把主键设为IDENTITY列

----------------------------------
建表语句写成
CREATE TABLE aa
(
id int IDENTITY (1, 1) PRIMARY KEY
)

当然也可以在sql管理工具里面设置
sql2005的话,在左边表的属性里面设

SQL 不会在 INSERT 错误时增加主键

【中文标题】SQL 不会在 INSERT 错误时增加主键【英文标题】:SQL don't increment primary key on INSERT error 【发布时间】:2011-05-29 12:30:01 【问题描述】:

今天有点惊讶地发现,当插入语句出错时,我的自动递增主键仍然会递增,结果是我们的表中有“缺失”数字。

这样设计 SQL 有什么原因吗?有没有办法覆盖这种行为?

我正在通过 Linq-to-SQL 访问。

【问题讨论】:

为什么“丢失”数字如此重要?可能有一种方法可以覆盖,但听起来更像是您在处理身份功能之前需要解决的问题。 这很重要,因为我的老板抱怨它:) 告诉你的老板这是正常行为,试图用手动系统覆盖它会给数据带来风险。通常没有正当理由不期望有差距。 删除记录时也会出现空白。重新分配这些数字可能会损害数据完整性。 【参考方案1】:

这是为了处理并发性并使其尽可能快的设计(如果同时发生 3 次插入并且回滚 1 次会发生什么......这会搞砸一切)......当插入开始时 sql服务器确定身份的值..如果发生回滚,这些值不会被重用..除非您想在每次回滚后运行 DBCC CHECKIDENT,否则您无能为力

如果您需要一个可以识别差距的查询,请查看此How to return all the skipped identity values from a table in SQL Server

SQL Server 的下一个版本将包含sequences,这可能会帮助您解决其中的一些问题,请看这里:A first look at sequences in SQL Server Denali

【讨论】:

以上是关于SQL如何实现主键数字自动增加?(SQLSERVER)的主要内容,如果未能解决你的问题,请参考以下文章

sql创建表格语句主键自动增加

如何自动增加非主键? - SQL 服务器

sql server中如何实现自增字段?

如何在 sql server 内置的 Visual Studio 中自动增加主键?

SQL Server 2000中如何设置自增主键?

sqlserve条件增加看不到的方法