Я пытаюсь создать триггер в своей базе данных.
У меня есть две таблицы: одна для информации о клиентах и одна для заказов клиентов.Я хочу создать триггер 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
Где этопроблема?