Cópia cascade de linhas em sql
Encontrei este tópico aqui:http: //www.sqlteam.com/forums/topic.asp? TOPIC_ID = 16836 Eu tenho exatamente o mesmo problema. Citar
Robert Pearmain escreve "Eu tenho 3 tabelas que contêm perguntas.
Tabela 1: Pergunta
Campo: campo ID (exclusivo): Nome (texto)
Tabela 2: Texto da pergunta (Referências Tabela1-ID)
Field: campo ID (exclusivo): QuestionID (número inteiro ref da tabela1 ID) Campo: texto
Tabela 3: Opções
Campo: campo ID (exclusivo): QuestionTextID (número inteiro ref da tabela2 ID) Campo: texto
Diga, por exemplo, que eu crio uma pergunta com 2 registros de texto de pergunta e 5 registros de opção. Se eu quisesse duplicar essa pergunta para uma nova pergunta e copiar os registros de Texto da pergunta para novos IDs e todas as opções relacionadas, como posso fazer isso facilmente (como a pergunta duplicada terá um novo ID, cada um dos duplicados os textos das perguntas terão novos IDs, assim como cada uma das opções). "
A solução sugerida é:
create procedure CopyQuestion
@idtocopy int
AS
declare @tempquestionid
declare @tempquestiontextid
declare @questiontextid
insert into question (name)
select name from question where id = @idtocopy
select @tempquestionid = @@identity
declare question_cursor cursor for
select id from [question text] where id = @idtocopy
open question_cursor
fetch next from question_cursor into @questiontextid
while @@fetch_status = 0
begin
insert into [question text] (questionid, text)
select @tempquestionid, text from [question text] where id = @questiontextid
select @tempquestiontextid = @@identity
insert into [options] (questiontextid, text)
select @tempquestiontextid, text from [options] where questiontextid = @questiontextid
fetch next from question_cursor into @questiontextid
end
close question_cursor
deallocate question_cursor
Existe uma solução melhor para este problema? Vou usar um gatilho de inserção. Obrigado