Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 04.05.2017
Сообщений: 7

Вложенный запрос вернул больше одного значения

07.05.2019, 12:22. Показов 1447. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для таблицы создано несколько триггеров, триггер CheckNum работает только если он один для таблицы, a с любым другим триггером выдает ошибку "Вложенный запрос вернул больше одного значения. Это запрещено когда вложенный запрос следует после =, !=, <, <=, >,>= или используется в качестве выражения", без него все триггеры работают. Не могу понять как исправить
BEGIN
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ALTER TRIGGER [dbo].[CheckNum]    
ON  [dbo].[tbCheck]    
AFTER  INSERT,UPDATE 
AS
BEGIN
IF(SELECT inserted.NumberOfProduct FROM inserted) IS NULL     
BEGIN        
UPDATE c SET NumberOfProduct = 1       
FROM inserted i       INNER JOIN dbo.tbCheck c ON  i.CheckNumber = c.CheckNumber  
DECLARE @val INT
DECLARE @uni INT
SELECT @uni=UnitPrice FROM inserted SET @val=@uni 
UPDATE tbCheck SET ProductValue=@val  
END 
ELSE
BEGIN 
DECLARE @num INT  
SELECT @num=NumberOfProduct,@uni=UnitPrice
FROM inserted
SET @val=@num*@uni
UPDATE tbCheck SET ProductValue=@val
END
END
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2019, 12:22
Ответы с готовыми решениями:

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

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

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

1
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
07.05.2019, 12:52
Цитата Сообщение от qw9 Посмотреть сообщение
IF(SELECT inserted.NumberOfProduct FROM inserted) IS NULL
Я могу одним INSERTом вставить в таблицу миллиард (!) записей!
И тогда в inserted будет миллиард записей!
Но вы спрашиваете сервер о миллиарде записей так, что он, бедняга, не может понять, о какой именно записи его спрашивают!

Для работы со множеством записей существуют, например, предикаты EXISTS(), NOT EXISTS(), IN()
Вот ими и надо пользоваться.

От себя могу посоветовать не определять в триггере скалярные переменные совсем.
Ибо надо работать с inserted и deleted сразу как с таблицами, содержащими сколько угодно записей.

Я, например,использую скалярные переменные, например,
для накопления какого-нибудь диагностического сообщения. И только.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2019, 12:52
Помогаю со студенческими работами здесь

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

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

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

"Вложенный запрос вернул больше одного значения."Не получается удалить две похожих записи
создаю хранимую процедуру на удаление USE GO /****** Object: StoredProcedure . Script Date: 21.02.2016 19:27:32 ******/ SET...

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru