2011-12-21 70 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