#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 содержит несколько экземпляров одного и того же идентификатора