2011-12-21 67 views
0

我有一個名爲order_details的表和另一個表book_inventorySQL Server 2005觸發器不能正常工作

如果有時我quantity_orderedorder_details它應該從從quantity_in_stock減少該值。

這裏是我的代碼:

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

在哪裏的問題? – 2011-12-21 05:59:17

+0

與此同時 - 您不在觸發器中使用INSERTED和DELETED別名 - 它的預期行爲? – 2011-12-21 06:00:22

回答

0

好吧,seemes對我說,寫這個查詢的正確方法是將

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中的值更改爲 如果你能幫助我 – 2011-12-21 20:27:53