我有一個問題,有多個部分,每部分帶有N個問題。每個部分分10個問題。我使用for loop
將一組10個問題的結果保存到名爲Answers
的表中。此外,我還有一個標準,在所有問題都得到解答時禁用運行部分,以便在pipleline中加載下一部分。SQL 2005 Express:這是可能跳過插入觸發器循環插入方案?
將10個問題提交給'答案'表時,我使用觸發器計算'QuestionMaster'主表中的問題總數,並將問題保存在Answers
中。如果兩者相等,那麼當前部分的狀態爲false,以便選擇下一部分。
我的觸發是:
ALTER Trigger [dbo].[GetAnsweredQuestionCount]
On [dbo].[Answers]
After Insert
As
Begin
Declare @sectionid as int
Declare @companyid as int
Declare @Count_Inserted as int
Declare @Count_remaining as int
Declare @userid as varchar(50)
Set @sectionid = (Select Top(1) SectionId from inserted)
Set @companyid = (Select Top(1) CompanyId from inserted)
Set @userid= (Select Top(1) UserId from inserted)
Set @Count_inserted = (Select count(id) from inserted where SectionId = @sectionid and companyid = @companyid and [email protected])
Set @Count_remaining = (Select count(id) from SectionQuestionMap where SectionId = @sectionid and companyid = @companyid and [email protected])
If @Count_inserted = @Count_remaining
begin
Update SectionCompanyRateMap Set IsCompleted =1 Where [email protected] and [email protected]
end
End
我的問題是,因爲我使用循環插入記錄,以便觸發過射擊10次,這是我不想。我想知道是否有任何方法可以在前9次跳過觸發器,這樣,只有當我的所有問題得到保存時,它纔會執行一次。
'(選擇頂層(1)SectionId從插入)' - 這是一個,我們應該說,*有趣*的方式來處理'inserted'可以包含多行。但爲什麼不重新編寫觸發器來正確處理多行插入(然後,如果可能的話,消除循環,並執行*多行插入) –