如何在SQL中为INSERT创建序列号?

时间:2012-06-17 12:19:59

标签: c# sql sql-server database tsql

我正在将数据保存到表中,但我还需要一个带有序列号的列。我怎么做? (我在C#中这样做,也许很重要。)

这一定非常简单,但谷歌搜索并没有成功。

编辑:我不想只保存一个整数。我想给SQL一个命令来保存时创建它,因为如果我创建一个整数并在创建它并保存它之间保存它 - 另一个查询可能会尝试同时保存相同的数字,我会得到两个条目用相同的数字。)

6 个答案:

答案 0 :(得分:9)

使用IDENTITY

CREATE TABLE YourTable
(
    ID INT IDENTITY
)

每次插入新记录时,SQL Server都会为您增加此值(没有两个记录具有相同的编号,它是唯一的)。

答案 1 :(得分:1)

最好的方法不是编程方法,而是让数据库自动创建递增字段。在SQL Server中,这称为identity列。

在您的insert语句中,您只需跳过该列,就像它不存在一样,但SQL Server会自动递增并为您填充。

答案 2 :(得分:1)

Uniqueidentifier解决了这个问题,但它不具有可伸缩性,该列不适合创建聚簇索引,因为生成的索引非常大,并且它的值不会总是增加(对定义良好的聚簇索引的限制)。

关键字IDENTITY非常合适,你可以根据你的需要选择整数数据类型(smallint,int,bigint ...)你可以通过函数scope_identity()

安全地获得最后一个值。

答案 3 :(得分:0)

使用sql中提供的IDENTITY。以下是示例

CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

Reference

答案 4 :(得分:0)

将序列号定义为主键NOT NULL和自动递增。希望这对你有所帮助。

答案 5 :(得分:0)

您如何看待在SQL Server中使用GUID(又名UNIQUEIDENTIFIER数据类型)?

DECLARE @myid uniqueidentifier = NEWID();
SELECT @myid