我有存储过程,采取@dbName
并在该数据库中插入记录。 我想获取最后插入的记录的ID。 SCOPE_IDENTITY()
返回NULL并且@@IDENTITY
返回正确的ID,为什么会发生?在我阅读时,如果桌面上有触发器,最好使用SCOPE_IDENTITY()
。 我可以使用IDENT_CURRENT
吗?无论触发器是否它都会返回表格范围内的ID?为什么SCOPE_IDENTITY返回NULL?
那么这是什么问题和使用什么?
EDITED
DECALRE @dbName nvarchar(50) = 'Site'
DECLARE @newId int
DECLARE @sql nvarchar(max)
SET @sql = N'INSERT INTO ' + quotename(@dbName) + N'..myTbl(IsDefault) ' +
N'VALUES(0)'
EXEC sp_executesql @sql
SET @newId = SCOPE_IDENTITY()
只是为什么我低估了你的问题的一个说明。从下面的评论看来,你在提供答案后编辑了你的问题,使答案看起来很混乱。不知道如何做某件事情并不令人羞耻。公开你的学习过程,以便其他人可以从中学习。就像现在一样,有这个问题的其他人现在不能使用你的经验来学习。 –
@本,我不同意你的看法。 “......不知道...的耻辱......”与此无关。我解释了为什么我在回答马丁时编辑我的文章。我错误地在这里写错了他们的顺序。在我的代码中(在家中),我按正确的顺序写了它们。我请你请upvote我的问题请 – theateist