在数据库编程中,在插入操作后检索主键标识字段的值至关重要。本文研究了用于此目的的各种方法,并深入了解了它们的功能和对不同场景的适用性。
@@IDENTITY 检索当前会话中生成的最后一个身份值,无论与身份关联的表的名称。
declare @t table ( id int identity primary key, somecol datetime default getdate() ) insert into @t default values select @@IDENTITY --returns 1
@@IDENTITY 的缺点是它不受范围限制。因此,它可以返回会话中任何语句生成的最后一个身份值,包括当前事务之外的语句。
SCOPE_IDENTITY() 检索会话中生成的最后一个身份值。当前范围,仅限于生成它的语句和事务。
select SCOPE_IDENTITY() --returns 1
SCOPE_IDENTITY() 是一个更与 @@IDENTITY 相比,它是精确的方法,因为它确保返回的标识值特定于当前范围。
将 OUTPUT 子句与 insert 语句结合使用,可以返回包含以下内容的表:插入的行,包括生成的标识值。
Create Table #Testing ( id int identity, somedate datetime default getdate() ) insert into #Testing output inserted.* default values
OUTPUT 提供了一种在单个事务中一次检索多个标识值的便捷方法。但是,它特定于目标表,需要额外的表创建和清理操作。
检索最后一个标识值的方法的选择取决于应用程序的具体要求。
以上是如何检索 SQL Server 中的最后一个标识值?的详细内容。更多信息请关注PHP中文网其他相关文章!