Ошибка при вставке значений из таблицы в таблицу

#sql #sql-server

#sql #sql-сервер

Вопрос:

Я пытаюсь вставить строки в результате запроса к другой таблице.

Я получаю эту ошибку:

Подзапрос возвращает несколько значений. Это не допускается, когда подзапрос следует =,! =, <, <=,>,> = Или когда оно используется как выражение.

Хотя, когда я выбираю только одну строку (ВЕРХНЮЮ 1) инструкции select, она работает нормально.

Весь запрос выглядит следующим образом:

 INSERT INTO ABSENCES (MATRICULE, ID_ABSENCE, CODE_COMPTEUR, DT_ABSENCE, DT_REPRISE_TRAVAIL, NBJ_OUVRE,ROW_ID)
SELECT 
   dv.MATRICULE, 
   dv.ID_DEMANDE, 
   dv.CODE_PROCESSUS, 
   dg.DT_DEPART, 
   dg.DT_RETOUR, 
   dg.DUREE, 
   dv.DT_DEMANDE
FROM DMD_DIVERS dv
INNER JOIN DMD_CONGE dg 
   ON dv.ID_DEMANDE=dg.ID_DEMANDE
WHERE 
   dv.CODE_PROCESSUS = 'P_CNG_AM' 
   AND dv.ETAT = 'N' 
   AND dv.DECISION = 'I'
   AND dv.MATRICULE = 228900
ORDER BY dg.DT_DEPART DESC
  

Комментарии:

1. В вашем коде нет подзапросов, поэтому он не может вернуть эту ошибку, если только одна из «таблиц» не является представлением.

2. Просто предположение, но есть ли у таблицы, в которую вы вставляете, триггер?

3. Точно, был триггер в таблице ОТСУТСТВИЙ. Спасибо

Ответ №1:

Отсутствие таблицы имеет уникальное ограничение (вероятный ID_ABSENCES ) Результат инструкции SELECT содержит несколько экземпляров одного и того же идентификатора