**编辑:已解决 - 谢谢大家!由于我的声望不高,我无法“投票支持”你们的回复,但我很感激!**
**编辑2:现在我的声望足够高了,给所有人投票支持!**
好的,我有一个存储过程运行一些插入操作,将新记录标识分配给一个变量,然后将它们插入另一个表中。问题是有些插入操作不会插入数据(如果没有要插入的数据),但 SCOPE_IDENTITY(); 从上一个插入操作继承下来...
在下面的代码中,我希望 @NewId2 是空的,但它包含了上一个插入操作的id。我应该怎么做才能防止 @NewId2 有“错误的id”?
**编辑2:现在我的声望足够高了,给所有人投票支持!**
好的,我有一个存储过程运行一些插入操作,将新记录标识分配给一个变量,然后将它们插入另一个表中。问题是有些插入操作不会插入数据(如果没有要插入的数据),但 SCOPE_IDENTITY(); 从上一个插入操作继承下来...
在下面的代码中,我希望 @NewId2 是空的,但它包含了上一个插入操作的id。我应该怎么做才能防止 @NewId2 有“错误的id”?
CREATE TABLE #tempdemo (
theId int IDENTITY(100,3),
theField varchar(20)
)
DECLARE @NewId1 int
DECLARE @NewId2 int
INSERT INTO
#tempdemo
(theField)
SELECT
'test1'
--this would have a "from table" in a real situation
WHERE
1 = 1
SET @NewId1 = SCOPE_IDENTITY();
INSERT INTO
#tempdemo
(theField)
SELECT
'test2'
--this would have a "from table" in a real situation
WHERE
1 = 2 --obviously fails, in my real situation there are times the insert has nothing to insert
SET @NewId2 = SCOPE_IDENTITY();
select '@NewId1 = ', @NewId1, '@NewId2 = ', @NewId2
drop table #tempdemo