Триггер SQL Server 2005 не работает - PullRequest
0 голосов
/ 21 декабря 2011

У меня есть таблица, которая называется order_details, а другая - book_inventory.

Если когда-либо ii quantity_ordered в order_details, это значение должно уменьшиться с quantity_in_stock до book_inventory.

Вот мой код:

create TRIGGER [dbo].[book]
   ON  [dbo].[order_details]
   AFTER UPDATE
AS 

IF UPDATE(quantity_ordered)
    UPDATE book_inventory
    SET    book_inventory.quantity_in_stock = book_inventory.quantity_in_stock - order_details.quantity_ordered
    FROM   order_details
    WHERE book_inventory.isbn = order_details.isbn

1 Ответ

0 голосов
/ 21 декабря 2011

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

create TRIGGER [dbo].[book]
   ON  [dbo].[order_details]
   AFTER UPDATE
AS 

IF UPDATE(quantity_ordered)
    UPDATE book_inventory
    SET    book_inventory.quantity_in_stock = book_inventory.quantity_in_stock - i.quantity_ordered + d.quantity_ordered 
    FROM   INSERTED i
    JOIN DELETED d
      ON d.isbn = i.isbn
    WHERE book_inventory.isbn = i.isbn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...