"Is Identity"列属性在SQL Server中是什么意思?

21

我第一次使用SQL Server,发现有一个列属性叫做Is Identity

这是什么意思?

将列属性标记为Is Identity = Yes有什么优点?

3个回答

29

这意味着该列使用Identity(seed, increment)函数为主键(通常)提供值。它也被称为“自动编号”。以下是示例的第二行:

CREATE TABLE Table (
TableID bigint IDENTITY(1,1) NOT NULL,
DateTimeStamp datetime NOT NULL DEFAULT (getdate()),
Data nvarchar(100) NOT NULL,
CONSTRAINT PK_Table PRIMARY KEY CLUSTERED 
(
    TableID ASC
)

此列的默认值是每个记录递增的列。请注意,您还可以从SCOPE_IDENTITY()中获取插入的值。不要使用@@IDENTITY,因为它已被弃用,并且在触发器或嵌套上下文的情况下可能返回错误的结果。


4

标志表示一个身份列 - 可以用作自动递增列(建议用于任何表)

它有许多含义,例如能够使用 @@IDENTITY 或 SCOPE_IDENTITY() 获取表中最后插入行的 ID 等。

尝试: 理解 Identity 列


我更新了评论并添加了一些更多的信息。别忘了给答案点赞。谢谢。 - IEnumerator
1
不要使用@@IDENTITY。它是不可靠的,如果表上有触发器将数据放入另一个具有标识列的表中,则@@IDENTITY将返回错误的值。 - mrdenny

2

它相当于MySQL的AUTO_INCREMENT属性。通常用于主键列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接