函數SCOPE_IDENTITY()
只返回一個值;它不能返回多於一個。問題是,你有這樣的查詢:
select SCOPE_IDENTITY()
from goals
這將返回一個在goals
的每一行價值 - 你的問題。
試試這個:
Insert into Goals(UserID) values (@UserID);
Insert into ActivityGoals(GoalsID, ActivityID, Longest, Total, Start, [End])
Select SCOPE_IDENTITY(), @ActivityID, @Longest, @Total, @Start, @End);
儘管這將在幾乎所有環境下工作,要做到這一點,最安全的方式是使用output
子句insert
:
declare @OutputIds table (id int);
insert into Goals(UserID)
output inserted.GoalId into @OutputIds
values (@UserID);
Insert into ActivityGoals(GoalsID, ActivityID, Longest, Total, Start, [End])
Select id, @ActivityID, @Longest, @Total, @Start, @End)
from @OutputIds;
這也有個好處(如果你想)你可以插入多行並捕獲所有的ID。
此程序未運行?你可以試試這個嗎? –
我添加了一個缺少的關鍵字。如果你設置了一個SQL小提琴,我可以測試它。 –
謝謝!我完成了!使用'Select SCOPE_IDENTITY()'來代替'(從目標中選擇SCOPE_IDENTITY())' –