Я тоже подумал об этом, но если единственным полем является текст вопроса, соединяются ли опции с text1 или text2, содержащими один и тот же текст, конечный результат копии будет точно таким же. Я согласен на сделку.
ел эту тему здесь:http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=16836 У меня точно такая же проблема. Цитата:
Роб Пирмейн пишет: «У меня есть 3 стола с вопросами.
Таблица 1: Вопрос
Поле: ID (уникальный) Поле: имя (текст)
Таблица 2: Текст вопроса (Ссылки Table1-ID)
Поле: ID (уникальный) Поле: QuestionID (целочисленный код для идентификатора таблицы1) Поле: текст
Таблица 3: Варианты
Поле: ID (уникальный) Поле: QuestionTextID (целочисленный код для идентификатора таблицы 2) Поле: текст
Скажем, например, я создаю вопрос с 2 текстовыми записями Вопроса и 5 опционными записями. Если бы я хотел продублировать этот вопрос на новый вопрос и скопировать записи «Текст вопроса» на новые идентификаторы и все связанные с ними параметры, как это можно сделать легко (поскольку дублированный вопрос будет иметь новый идентификатор, каждый из дублированных вопросов Текст вопроса будет иметь новые идентификаторы, как и каждый из вариантов). "
Предлагаемое решение:
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
Есть ли лучшее решение этой проблемы? Я буду использовать триггер вставки. Спасибо!