我正在将数据保存到表中,但我还需要一个带有序列号的列。我怎么做?(我在 C# 中这样做,也许这很重要。)
这一定很简单,但谷歌搜索并没有成功。
编辑:我不想只保存一个整数。我想在保存时给 SQL 一个命令来创建它,因为如果我创建一个整数并在创建它和保存它之间保存它——另一个查询可能会尝试同时保存相同的数字,我会得到两个条目编号相同。)
我正在将数据保存到表中,但我还需要一个带有序列号的列。我怎么做?(我在 C# 中这样做,也许这很重要。)
这一定很简单,但谷歌搜索并没有成功。
编辑:我不想只保存一个整数。我想在保存时给 SQL 一个命令来创建它,因为如果我创建一个整数并在创建它和保存它之间保存它——另一个查询可能会尝试同时保存相同的数字,我会得到两个条目编号相同。)
使用IDENTITY
:
CREATE TABLE YourTable
(
ID INT IDENTITY
)
每次插入新记录时,SQL Server 都会为您增加该值(没有两条记录具有相同的编号,它是唯一的)。
最好的方法不是程序化的,而是让你的数据库自动创建一个递增的字段。在 SQL Server 中,这称为标识列。
在您的插入语句中,您只需跳过该列,就好像它不存在一样,但 SQL Server 会自动递增并为您填充它。
Uniqueidentifier 解决了这个问题,但它不可扩展,该列不适合创建聚集索引,因为生成的索引非常大并且它的值并不总是增加(对定义明确的聚集索引的限制)。
关键字 IDENTITY 就足够了,您可以根据需要在整数数据类型中进行选择(smallint、int、bigint ...),您可以安全地获得通过函数 scope_identity() 分配的最后一个值
您如何看待使用 GUID(又名SQL Server 中的UNIQUEIDENTIFIER数据类型)?
DECLARE @myid uniqueidentifier = NEWID();
SELECT @myid
使用IDENTITY
sql 中可用的。下面是例子
CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
将序列号定义为主键 NOT NULL 和 Auto Increment。希望这对您有所帮助。