Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вставка значений из одной таблицы в другую  [new]
jeanssp
Member

Откуда:
Сообщений: 164
Здравствуйте! Задача создать запрос в триггере, который добавил бы запись в таблицу 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]     Ответить | Цитировать Сообщить модератору
 Re: Вставка значений из одной таблицы в другую  [new]
uaggster
Member

Откуда:
Сообщений: 827
А сразу перед вставкой проверить и вставить нужное - нельзя?
И триггер не понадобится.
1 авг 19, 10:33    [21939568]     Ответить | Цитировать Сообщить модератору
 Re: Вставка значений из одной таблицы в другую  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
uaggster,

такие задачи обычно дают в качестве тестов. Тема была актуальна эдак в 80-х годах, когда данные вносили из консоли и не было ХП.
1 авг 19, 12:11    [21939716]     Ответить | Цитировать Сообщить модератору
 Re: Вставка значений из одной таблицы в другую  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
jeanssp,

переписать на merge и хоть в триггере, хоть без
1 авг 19, 12:13    [21939717]     Ответить | Цитировать Сообщить модератору
 Re: Вставка значений из одной таблицы в другую  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
jeanssp
код ошибочный . Дальше не могу сообразить.
1) Для вставки с условием, когда записи нет, добавьте not exists в условие where
2) Для обновления поставьте перед insert команду update
Владислав Колосов
такие задачи обычно дают в качестве тестов.
Ну как, у человенка 11 лет опыта в SQL Server :-)
1 авг 19, 12:31    [21939733]     Ответить | Цитировать Сообщить модератору
 Re: Вставка значений из одной таблицы в другую  [new]
jeanssp
Member

Откуда:
Сообщений: 164
alexeyvg
jeanssp
код ошибочный . Дальше не могу сообразить.
1) Для вставки с условием, когда записи нет, добавьте not exists в условие where
2) Для обновления поставьте перед insert команду update
Владислав Колосов
такие задачи обычно дают в качестве тестов.
Ну как, у человенка 11 лет опыта в SQL Server :-)

Да я все эти 11 лет в аксессе мышкой запросы делал. А теперь вот хочу перейти с аксесса на sql server . Какой нибудь примерчик дайте пожалуйста.
1 авг 19, 13:38    [21939824]     Ответить | Цитировать Сообщить модератору
 Re: Вставка значений из одной таблицы в другую  [new]
iiyama
Member

Откуда:
Сообщений: 642
jeanssp,

Пример А
1 авг 19, 15:52    [21940002]     Ответить | Цитировать Сообщить модератору
 Re: Вставка значений из одной таблицы в другую  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
jeanssp
Какой нибудь примерчик дайте пожалуйста.
Пример чего нужен?

Примеры триггеров можно посмотреть в хелпе 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 Ответить