![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 10.02.2016
Сообщений: 9
|
![]()
Здравствуйте!
Товарищи, помогите с триггером на вставку значений. Скриншот физической модели базы данных в приложении. Четыре таблицы. Таблица invoice - это расходная накладная, которая оформляется на выбранного клиента Таблица product - это товар, который имеет срок годности. Таблица production - это производство, точнее партии. Хотелось бы организовать просто склад, но приходится извращаться с партиями, чтобы учесть срок годности. Соответственно, при продаже товар выбирается и списывается из конкретной партии, срок годности которой не вышел. Иными словами, один и тот же товар может быть в N-ом количестве партий с разными сроками годности Таблица selling - это список товаров в одной накладной. Первичный ключ этой таблицы составной. Когда мы продаем товар, то вбиваем его так: в накладную с id=X добавить товар с id=Y из партии с id=Z. Это позволяет вбивать в одну накладную один и тот же товар, просто из разных партий Теперь сам триггер. Сначала я проверяю условие на количество в партии. Если количество в партии меньше продаваемого товара, то надо откатить транзакцию. Если все нормально, то записываем номер накладной, код товара и код партии, а также проданное количество sell_quantity. На это количество должно уменьшиться количество в партии, то есть production_quantity:=production_qua ntity - sell_quantity Теперь сама проблема. Триггер в Microsoft SQL Server прописывается. Но когда пытаюсь добавить товар: INSERT INTO selling (id_invoice, id_product, id_consigment, sell_quantity) VALUES (здесь указываю верные значения. проверял много раз) выдает ошибку процедура i_trigger_ogren_insert, строка 8 Вложенный запрос вернул больше одного значения. Это запрещено, когда вложенный запрос следует после =,!=,<,<=,>,>= или используется в качестве выражения Значит напортачил в триггере. Пожалуйста, подскажите, что в коде надо исправить? Код:
На всякий случай прикладываю триггер на удаление товара из накладной (при этом вернуть удаляемое количество обратно в партию). Он работает без проблем Код:
Последний раз редактировалось don_zaresh; 19.09.2016 в 22:15. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос на вставку формулы | Kapkom | Microsoft Office Excel | 2 | 28.06.2016 17:39 |
переделать с С++ на ассм. вставку | AlexVI | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 19.07.2014 12:10 |
Запрет на вставку, на специальную вставку | Аслан Абдрахманов | Microsoft Office Excel | 11 | 11.02.2014 10:21 |
Макрос на вставку строк | dirih | Microsoft Office Excel | 7 | 28.06.2013 16:19 |
макрос на вставку строк | hakervanya | Microsoft Office Excel | 11 | 25.09.2012 19:30 |