2016-08-14 3 views
0

Таблица компонентов:Триггер SQL Server: как увеличить значение столбца в таблице при увеличении значения столбца другой таблицы?

enter image description here

Таблица материал:

enter image description here

Как можно написать триггер для уменьшения значения material_quantity в таблице material, когда component_quantity увеличивается?

Кстати, компонент изготовлен из материала, поэтому, когда количество одного компонента увеличивается, количество материала, которое имеет одинаковые material_id, будет уменьшаться с той же суммой.

+0

Просто введите команду UPDATE. –

ответ

2

После запуска триггера вставки/обновления вам помогут.

CREATE TRIGGER some_name 
ON dbo.components 
AFTER INSERT, UPDATE 
AS 
BEGIN 
    UPDATE m 
    SET material_quantity = m.material_quantity - (i.component_quantity - c.component_quantity) 
    FROM materials m 
    INNER JOIN components c ON c.material_id = m.material_id 
    INNER JOIN inserted i ON c.component_id = i.component_id 
END 
+0

Когда происходит 'UPDATE', ваш код не принимает во внимание любые значения в' deleted', i.e вычисляет дельта, возникающие в результате обновления. Интересно, что может понадобиться OP. – HABO

+0

@ HABO да, тоже об этом подумал. Но лучше использовать другой триггер для удаления. И должен быть внешний ключ, так что удаление может не поправиться – gofr1

 Смежные вопросы

  • Нет связанных вопросов^_^