2

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

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

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

4

6 回答 6

9

使用IDENTITY

CREATE TABLE YourTable
(
    ID INT IDENTITY
)

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

于 2012-06-17T12:25:59.410 回答
1

最好的方法不是程序化的,而是让你的数据库自动创建一个递增的字段。在 SQL Server 中,这称为标识列。

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

于 2012-06-17T12:23:47.340 回答
1

Uniqueidentifier 解决了这个问题,但它不可扩展,该列不适合创建聚集索引,因为生成的索引非常大并且它的值并不总是增加(对定义明确的聚集索引的限制)。

关键字 IDENTITY 就足够了,您可以根据需要在整数数据类型中进行选择(smallint、int、bigint ...),您可以安全地获得通过函数 scope_identity() 分配的最后一个值

于 2015-08-10T20:47:55.963 回答
0

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

DECLARE @myid uniqueidentifier = NEWID();
SELECT @myid
于 2013-11-20T10:23:57.460 回答
0

使用IDENTITYsql 中可用的。下面是例子

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

参考

于 2012-06-17T12:24:15.250 回答
0

将序列号定义为主键 NOT NULL 和 Auto Increment。希望这对您有所帮助。

于 2012-06-17T12:34:47.123 回答