Триггер SQL Server ON DELETE не работает должным образом - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь создать триггер в своей базе данных.

У меня есть две таблицы: одна для информации о клиентах и ​​одна для заказов клиентов.Я хочу создать триггер FOR DELETE, поэтому при удалении заказа из таблицы заказов стоимость этого заказа должна быть уменьшена со счета клиента.

Сначала я создаю триггер AFTER INSERT, он работаетЧто ж!

Вот код:

ALTER TRIGGER [dbo].[set_customer_debt]
ON [dbo].[orders]
AFTER INSERT
AS 
BEGIN
    UPDATE customer
    SET debt = debt + (SELECT cost FROM orders
                       INNER JOIN services ON services.service# = orders.service#
                       WHERE orders.order# IN (SELECT order# FROM inserted))
    WHERE customer# IN (SELECT customer# FROM inserted)
END

Затем я скопировал это и изменил на FOR DELETE, но он просто возвращает NULL для долга:

ALTER TRIGGER [dbo].[delete_customer_debt]
ON [dbo].[orders]
FOR DELETE
AS 
BEGIN
    UPDATE customer
    SET debt = debt - (SELECT cost FROM orders
                       INNER JOIN services ON services.service# = orders.service#
                       WHERE orders.order# IN (SELECT order# FROM deleted))
    WHERE customer# IN (SELECT customer# FROM deleted)
END

Где этопроблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...