Copia en cascada de filas en sql
Encontré este hilo aquí:http: //www.sqlteam.com/forums/topic.asp? TOPIC_ID = 16836 Tengo exactamente el mismo problema. Citar
Rob Pearmain escribe "Tengo 3 tablas que contienen preguntas.
Table 1: Pregunta
Campo: ID (Único) Campo: Nombre (Texto)
Table 2: Texto de la pregunta (Referencias Table1-ID)
Field: ID (único) Campo: QuestionID (referencia entera a la ID de Table1) Campo: texto
Table 3: Opciones
Field: ID (único) Campo: QuestionTextID (número entero ref. A Table2 ID) Campo: Texto
Por ejemplo, creo una pregunta con 2 registros de texto de preguntas y 5 registros de opciones. Si quisiera duplicar esa pregunta en una nueva pregunta, y copiar los registros del Texto de la pregunta a las nuevas ID y todas las opciones relacionadas, ¿cómo puedo hacer esto fácilmente? (Como la pregunta duplicada tendrá una nueva ID, cada una de las duplicadas el texto de la pregunta tendrá nuevos ID, al igual que cada una de las opciones). "
La solución sugerida es:
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 una mejor solución para este problema? Usaré un disparador de inserción. ¡Gracias