2014-02-18 23 views
0

我正在處理庫存管理系統。我想在插入一張表後立即更新兩張表,所以我使用SQL完成了插入觸發後,但是這個觸發器並未從C#中觸發,這是我的應用程序的前端。不知道如何從C#中觸發觸發器。任何人都可以幫助我,因爲我必須在星期天之前提交此項目。 這是我的SQL觸發器。SQL觸發器不會觸發使用C#?

CREATE TRIGGER tbl_Sales_ForInsert 
ON SALES 
FOR INSERT 
AS 
BEGIN 



    DECLARE @ITEMMODEL varchar(100) 
     SELECT @ITEMMODEL = @ITEMMODEL FROM inserted 
     update SALES set PROFIT=TOTAL_PRICE - (SELECT QUANTITY FROM SALES WHERE [email protected]) * (SELECT RATE FROM ITEM_DETAILS WHERE [email protected]) WHERE [email protected] 
     UPDATE ITEM_DETAILS SET QUANTITY=QUANTITY-(SELECT QUANTITY FROM SALES WHERE [email protected]) WHERE [email protected] 
     UPDATE ITEM_DETAILS SET AMOUNT = AMOUNT - (SELECT RATE FROM ITEM_DETAILS WHERE [email protected]) * (SELECT QUANTITY FROM SALES WHERE [email protected]) where [email protected] 
    END 
+1

如果您在服務器中插入新記錄,這會觸發得很好嗎? –

+2

我會檢查你的觸發器是否是手動插入。不要試圖一次嘗試一切。隔離問題,然後繼續。 – u84six

回答

0

問題@ITEMMODEL在SELECT語句。我寫道:

SELECT @ITEMMODEL = ITEM_MODEL FROM inserted 

,現在是工作的罰款。

1

無論客戶端是什麼觸發器都應該觸發。您應該嘗試使用Sql Profiler來分析正在執行的Sql。此外,請嘗試直接在Management Studio中執行您的TSQL代碼並查看會發生什麼。

0

一種方法是首先在SQL數據庫中測試觸發器。使用腳本創建觸發器(看起來是正確的),然後將一些數據添加到Sales表中,並查看Sales和item_details表中的數據是否已更新。一旦您知道觸發器正在工作並正確填充,那麼請致電C#將新記錄插入到Sales表中。一旦您將新行插入到Sales表中,觸發器就會自動觸發。

+0

@ mbonney..Trigger在sql中正常工作 – user3262450