我有一个存储过程,插入一个具有Identity列的记录。 插入后我立即使用@@ identity在子表中插入记录。
这样做有什么影响吗?
答案 0 :(得分:4)
如果您的版本提供此功能,通常不如SCOPE_IDENTITY
那么好,因为@@ Identity不限于当前范围。
它将检索最新的标识,即使它来自不同表中的不同sp。
Pinal Dave对这里的IDENTITY
产品有一个直截了当的解释:
http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/
答案 1 :(得分:3)
SCOPE_IDENTITY。如果INSERT应该触发一个也执行标识插入的触发器,那么你将从@@ identity获得错误的值(即触发器插入产生的值)。
答案 2 :(得分:1)
@@ IDENTITY是为任何记录插入的最后一个标识值。如果您获得高用户并发性,那么您最终将得到错误的标识值,即,您将获得另一个请求刚刚插入的值。
对于插入当前范围的最后一个标识值,请使用SCOPE_IDENTITY。
答案 3 :(得分:0)
只是为了标题“Identity Crisis”
添加我最喜欢的文章