Моя БД выглядит так
tblAudits
PK AuditID
AuditStatus nvarchar(50)
tblQuestionDefs
PK QuestionID
tblAuditAnswers
PK AnswerID
FK AuditID
FK QuestionID
Я недавно добавил несколько новых вопросов к аудитам и хочу добавить запись ответов на каждый новый вопрос ко всем активным аудитам. Каков наилучший способ сделать это в SQL? Я знаю, что могу использовать курсоры или циклы , но оба они очень медленные AFAIK. Есть ли какой-нибудь сет-способ сделать это?
Вот код курсора
declare
@AuditID int
declare AuditsCursor cursor fast_forward for
select AuditID from tblAudits where AuditStatus='Issued' or AuditStatus='Pending' order by AuditID desc
open AuditsCursor
fetch next from AuditsCursor
into @AuditID
while @@FETCH_STATUS = 0
begin
insert into tblAuditAnswers (AuditID, QuestionID)
select @AuditID as AuditID, QuestionID
from tblQuestionDefs
where QuestionID not in (
select QuestionID from tblAuditAnswers where AuditID=@AuditID
)
fetch next from AuditsCursor
into @AuditID
end
close AuditsCursor
deallocate AuditsCursor