我有一个问卷,有多个部分,每个部分有 N 个问题。每个部分都有 10 个问题。我正在将一组 10 个问题的结果保存到Answers
使用for loop
. 另外,我有一个标准来在所有问题都得到回答时禁用正在运行的部分,以便在管道中加载下一个部分。
在向“答案”表提交 10 个问题时,我使用触发器计算“QuestionMaster”主表中的问题总数以及保存在 中的问题Answers
。如果两者相等,则当前部分状态为假,以便选择下一部分。
我的触发器是:
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 userid=@userid)
Set @Count_remaining = (Select count(id) from SectionQuestionMap where SectionId = @sectionid and companyid = @companyid and userid=@userid)
If @Count_inserted = @Count_remaining
begin
Update SectionCompanyRateMap Set IsCompleted =1 Where SectionId=@sectionid and CompanyId=@companyid
end
End
我的问题是,因为我使用循环来插入记录,所以触发器触发了 10 次,这是我不想要的。我想知道是否有任何方法可以跳过前 9 次触发器,这样,当我的所有问题都保存时,它只会执行一次。