Значения таблицы соединений сервера SQL сохраняются четыре раза за один раз - PullRequest
4 голосов
/ 06 мая 2011

Я загрузил CSV-файл в фиктивную таблицу (csv_upload) в SQL Server 2008. Я должен распределить данные в таблицах ниже, используя триггер;

Questions          Answers       Test              QAT
---------         ---------     ------            -----
Questid           Ansid          Testid           Questid
Question          Answers        Testname         Ansid
                                                  Testid
                                                  id
                                                  StdUsername

Код триггера;

 INSERT INTO tbl_answers ( Answer)
select  DISTINCT Answer  
from tbl_csv_upload


INSERT INTO tbl_questions ( Question )
select DISTINCT Question 
from tbl_csv_upload 

INSERT INTO tbl_taqa (StdUsername,questid, ansid , testid ) 
 SELECT  StdUsername ,q.quest_id,a.ans_id,t.test_id
  FROM csv_upload c, questions q, answers a, test t
WHERE c.Question = q.Question
AND c.Answer = a.Answer 
AND t.test_id = IDENT_CURRENT('test')

Этот триггер работал хорошо для первой загрузки из приложения asp.net, но при второй загрузке он сохраняет данные 4 раза в таблице QAT вместо тех, но другие таблицы в порядке. Пожалуйста, мне нужна срочная помощь.

1 Ответ

1 голос
/ 06 мая 2011

Возможно, у вас есть дубликаты вопросов и ответов в ваших данных. DISTINCT избавляет от дубликатов, присутствующих в настоящее время в таблице выгрузки, но в следующий раз, когда вы вызываете ваш прок, они вставляются снова, поскольку он не учитывает значения, уже присутствующие в таблице.

Используйте это, чтобы вставить ответы:

INSERT
INTO    answers (answer)
SELECT  answer
FROM    tbl_csv_upload
EXCEPT
SELECT  answer
FROM    answers

и аналогичный запрос для questions.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...