2011-12-21 4 views
0

order_detailsというテーブルとbook_inventoryというテーブルがあります。SQL Server 2005のトリガが動作しない

order_detailsで私がquantity_orderedになったとき、その値を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

問題があるだろうと私にseemes一方、 –

+0

- トリガーにINSERTEDとDELETEDエイリアスを使用しないで、意図した動作をしますか? –

答えて

0

[OK]を、このクエリを記述する適切な方法は

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 
+0

お返事ありがとうございました。問題は初心者であり、トリガを適用する場所はわかりません。私は何をしたのオープンSQL Server 2005は、新しいクエリを作成し、コードを実行 しかし、私はasp.netのbook_inventory dintの変更の値のフロントエンドを介して値を入力したとき あなたが私を助けることができる場合は素晴らしいだろう –