2011-12-21 3 views
0

order_details이라는 테이블과 book_inventory이라는 테이블이 있습니다.SQL Server 2005 트리거가 작동하지 않습니다.

내가 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

가 어디 질문 할 것이다 나에게 seemes : 여기

내 코드? 한편 –

+0

- 트리거에서 INSERTED 및 DELETED 별칭을 사용하지 않습니다. 의도 한 동작입니까? –

답변

0

확인이 쿼리를 작성하는 적절한 방법은

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 서버 2005, 새로운 쿼리를 작성하고 코드를 하지만 내 프론트 엔드를 통해 값을 입력 한 때 book_inventory dint 변경에있는 값을 입력했습니다 내가 도와 줄 수 있다면 위대한 것입니다 –

관련 문제