Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
jeanssp Member Откуда: Сообщений: 187 |
Здравствуйте! Задача создать запрос в триггере, который добавил бы запись в таблицу goods_stocks(остатки товаров) при добавлении записи в таблицу purch_goods(закупка товаров). Таблицы связаны один к одному, поля в них естественно отличаются. Перед вставкой строки нужно проверить не существует ли запись с таким же good_id (purch_goods.good_id = goods_stocks.good_id). Если да, то изменить количество товара. Если нет - вставить строку с товаром good_id,qty,qty (нужно одно и то же количество вставить в два поля: остаток , доступный остаток) Пока я смог написать только так, но код ошибочный . Дальше не могу сообразить. Помогите, пожалуйста. CREATE TRIGGER trMatcingStocksOnInsertPG ON purch_goods FOR INSERT AS IF @@ROWCOUNT = 0 RETURN SET NOCOUNT ON INSERT INTO goods_stocks (good_id, stock,available) SELECT good_id,qty,qty FROM purch_goods WHERE purch_goods.good_id = goods_stocks.good_id К сообщению приложен файл. Размер - 9Kb |
1 авг 19, 09:49 [21939518] Ответить | Цитировать Сообщить модератору |
uaggster Member Откуда: Сообщений: 960 |
А сразу перед вставкой проверить и вставить нужное - нельзя? И триггер не понадобится. |
1 авг 19, 10:33 [21939568] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
uaggster, такие задачи обычно дают в качестве тестов. Тема была актуальна эдак в 80-х годах, когда данные вносили из консоли и не было ХП. |
1 авг 19, 12:11 [21939716] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
jeanssp, переписать на merge и хоть в триггере, хоть без |
1 авг 19, 12:13 [21939717] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31784 |
2) Для обновления поставьте перед insert команду update
|
||||
1 авг 19, 12:31 [21939733] Ответить | Цитировать Сообщить модератору |
jeanssp Member Откуда: Сообщений: 187 |
Да я все эти 11 лет в аксессе мышкой запросы делал. А теперь вот хочу перейти с аксесса на sql server . Какой нибудь примерчик дайте пожалуйста. |
||||||
1 авг 19, 13:38 [21939824] Ответить | Цитировать Сообщить модератору |
iiyama Member Откуда: Сообщений: 642 |
jeanssp, Пример А |
1 авг 19, 15:52 [21940002] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31784 |
Примеры триггеров можно посмотреть в хелпе https://docs.microsoft.com/ru-ru/sql/t-sql/statements/create-trigger-transact-sql Обратите внимание на псевдо-таблицы inserted, deleted. А то получается, что вы в своём триггере вставляете данные из всей таблицы. По логике, как я уже сказал, в SQL проверку при вставке можно сделать с помощью NOT EXISTS Пример NOT EXISTS можно посмотреть в примерах EXISTS: https://docs.microsoft.com/ru-ru/sql/t-sql/language-elements/exists-transact-sql |
||
1 авг 19, 18:19 [21940116] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |