0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 3
1

Проблема с триггером Запрос вернул больше одного значения

23.12.2019, 18:02. Показов 787. Ответов 4

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Сделал триггер для свое базы данных
Суть в чем
При добавлении в таблицу с перемещениями между блоками склада записи в основной таблицей должны изменяться в соответствии с количеством перенесённых товаров из одного блока в другой и добавляться новые
При попытке срабатывания SQL Выдает ошибку с сообщением "...Запрос вернул больше одного значения..."

вот код триггера
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
CREATE TRIGGER insert_item
ON TRANSFERS AFTER INSERT
AS
DECLARE @I_ID INT,@L_O INT,@L_I INT,@I_COUNT INT,@I_C INT;
BEGIN
 SELECT @I_ID=ITEM_ID FROM inserted;
 SELECT @L_O=LOC_OUT FROM inserted;
 SELECT @L_I=LOC_IN FROM inserted;
 SELECT @I_COUNT=ITEM_COUNT FROM inserted;
 
 IF (@I_ID=(SELECT ITEM_ID FROM ITEMS WHERE ITEM_ID=@I_ID) AND @L_O=(SELECT LOCATION_ID FROM ITEMS WHERE LOCATION_ID=@L_O))
 
 BEGIN
    SELECT @I_C=ITEM_COUNT-@I_COUNT FROM ITEMS WHERE LOCATION_ID=@L_O;
    UPDATE ITEMS SET ITEM_COUNT=@I_C
    WHERE ITEM_ID=@I_ID AND LOCATION_ID=@L_O;
    INSERT ITEMS VALUES (@I_ID,@L_I,@I_COUNT);
 END
 
IF (@I_ID=(SELECT ITEM_ID FROM ITEMS WHERE ITEM_ID=@I_ID) AND (@L_I=(SELECT LOCATION_ID FROM ITEMS WHERE LOCATION_ID=@L_I)))
 
 BEGIN
    SELECT @I_C=ITEM_COUNT+@I_COUNT FROM ITEMS WHERE LOCATION_ID=@L_O;
    UPDATE ITEMS SET ITEM_COUNT=@I_C 
    WHERE ITEM_ID=@I_ID AND LOCATION_ID=@L_I;
    INSERT ITEMS VALUES (@I_ID,@L_I,@I_COUNT);
 END
 
 IF (@I_ID!=(SELECT ITEM_ID FROM ITEMS WHERE ITEM_ID=@I_ID))
 BEGIN
    INSERT ITEMS VALUES (@I_ID,@L_I,@I_COUNT);
 END
END
Подскажите пожалуйста в чем может быть проблема
Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2019, 18:02
Ответы с готовыми решениями:

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

Запрос Select T-sql - Вложенный запрос вернул больше одного значения
Нужно посчитать комиссию от сделки. DealShare(комиссия) - поле таблицы agents, supplies -...

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

Вложенный запрос вернул больше одного значения
Здравствуйте, подскажите, пожалуйста, в чём может быть ошибка? Уже несколько раз перепроверил код,...

4
5251 / 4199 / 1038
Регистрация: 29.08.2013
Сообщений: 26,567
Записей в блоге: 3
23.12.2019, 19:11 2
Цитата Сообщение от HakkerzX Посмотреть сообщение
@I_ID=(SELECT ITEM_ID FROM ITEMS WHERE ITEM_ID=@I_ID
ты вот эти свои подзапросы проверил? они одно значение возвращают?
0
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 3
23.12.2019, 21:08  [ТС] 3
Цитата Сообщение от qwertehok Посмотреть сообщение
ты вот эти свои подзапросы проверил? они одно значение возвращают?
По идее да,но как удостовериться ?
0
5251 / 4199 / 1038
Регистрация: 29.08.2013
Сообщений: 26,567
Записей в блоге: 3
23.12.2019, 21:30 4
проверить?

ты как свою шайтан-машину писал? без тестов?
0
0 / 0 / 0
Регистрация: 05.03.2017
Сообщений: 3
23.12.2019, 22:09  [ТС] 5
Цитата Сообщение от qwertehok Посмотреть сообщение
ты как свою шайтан-машину писал? без тестов?

все остановилось на первом тесте

Но на самом деле пол логике должно работать но я не понимаю в чем проблема
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2019, 22:09
Помогаю со студенческими работами здесь

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

При условии having count(*) = 1 вложенный запрос вернул больше одного значения
Запрос выполняется с ошибкой update TFF_OBSCURE_PP set SUM_PP_ALL = (select TFF_PP.SUM_PP...

Ошибка при внесении записи в базу данных (вложенный запрос вернул больше одного значения)
Когда вношу новую запись, возникает ошибка: Вложенный запрос вернул больше одного значения. Это...

Вложенный запрос вернул больше одного значения Это запрещено, когда вложенный запрос следует после =, !=, <
Здравствуйте,проблема вот в чем,при добавление записи в таблицу,первая запись добавляется,а при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru