商品出入庫更新庫存問題(C#與SQL SERVER)

CSDN問答 2022-01-07 23:43:58 阅读数:228

商品 品出 出入 更新 c#

我這是畢業設計的,界面和數據庫都設計好了,各個功能也能實現,現在卡在數據庫裏,數據庫真的不懂,感覺要觸發器實現。希望有大佬有空幫下忙,請給出詳細代碼。 留下你的WX,太多Q給不了,可以請你吃個外賣,喝杯奶茶。心好累了QAQ。

如圖:

 

 

功能是:

入庫錶

1.添加物品信息時,更新庫存,例如:

        編號   名稱    數量    價格     日期                        編號  名稱   數量

入庫:1      可樂     10         4     2021.1.1            庫存:1     可樂    10  (20)(當可樂再次入庫時,就要加上之前的)

           2      雪碧     10         4     2021.1.1                       2     雪碧    10

           3      可樂     10         4     2021.1.2

2.修改物品信息時,更新庫存:

入庫:1      可樂     10          4     2021.1.1            庫存:1     可樂    20(15)

           2      雪碧     10         4     2021.1.1                        2     雪碧    10

           3      可樂     10(5)4     2021.1.2

當把可樂的數量由10改到5時,庫存就要相應减少5,由20改為15

3.删除物品信息時,更新庫存:

入庫:1      可樂     10          4     2021.1.1                       庫存:1     可樂    15(剩餘10)

           2      雪碧     10         4     2021.1.1(删除)                    2     雪碧    10(已删除)

           3      可樂      5          4     2021.1.2(删除)

當删除雪碧時,同時删除庫存數,庫存就沒有雪碧了

當删除第三行可樂時,數量减少5,庫存裏的可樂就剩10

 

銷售錶:

1.添加出售物品,减少庫存:

銷售: 1     可樂     5      4      2021.1.5                庫存:1     可樂     10(5)

庫存原本有10支可樂,銷售5,庫存剩餘5   

2.修改出售物品:

銷售: 1     可樂     5(3)      4      2021.1.5                庫存:1     可樂     5(7)

原本出售5支,現在出售3支, 庫存就剩餘7支

3.删除出售物品:

銷售: 1     可樂     3      4      2021.1.5 (删除)               庫存:1     可樂     7(10)

删除銷售的可樂,庫存數+3,又7變為10。

 

下面是:入庫錶:

銷售錶:

庫存錶:

三張錶都設置ID為主鍵,其他什麼也沒有設置,主要不懂。

還有一個損壞錶,原理應該和銷售錶一樣,就不列出了。

以上就是本次難題了,懇求各比特大佬幫幫忙,(留下不學無術的淚水QAQ)

如果設計思路有問題,請給小弟提點意見。(准備面試實習,我在學習Unity,和數據結構,數據庫不會用到,時間緊迫,就不想花時間重新學數據庫了,以後工作用到,再回來重學,先度過眼前難關,謝謝大家)

 




采納答案:

能不用觸發器就不用,實在影響性能,如果是項目的話架構一般會讓你在業務規則層實現,目的是好維護好移植,考慮你是畢設建議你采用存儲過程實現,至於如何編寫存儲過程,在CSDN上找吧關於庫存的存儲過程一大把,改改就行了。你要學的知識點 1:基於你系統使用的orm如何調用存儲過程,2如何編寫存儲過程實現你上述業務-csdn有例程的。



其他答案2:

哈哈哈,終於弄懂了,現在完成了入庫錶的觸發器增,修

增:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER dbo.T_INSERT
   ON  dbo.TB_Import
   AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;

    IF((SELECT Count(*) FROM TB_Inventory WHERE Name_In = (SELECT Name_Im FROM inserted))= 0)

    INSERT INTO TB_Inventory(ID_In,Name_In,Number_In) SELECT ID_Im,Name_Im,Number_Im FROM inserted
    
    ELSE
    UPDATE TB_Inventory SET Number_In = Number_In +(SELECT Number_Im FROM inserted) 
    WHERE Name_In = (SELECT Name_Im FROM inserted )

END
GO

改:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER dbo.T_UPDATE
   ON  dbo.TB_Import
   AFTER UPDATE
AS 

BEGIN
    SET NOCOUNT ON;

       IF((SELECT Count(*) FROM TB_Inventory WHERE Name_In = (SELECT Name_Im FROM inserted))= 0)

    INSERT INTO TB_Inventory(ID_In,Name_In,Number_In) SELECT ID_Im,Name_Im,Number_Im FROM inserted
    
    ELSE
    UPDATE TB_Inventory SET Number_In = Number_In  - (SELECT Number_Im FROM deleted) + (SELECT Number_Im FROM inserted)
    WHERE Name_In = (SELECT Name_Im FROM inserted )

END
GO


其他答案3:

入庫錶,全部功能實現,出庫錶,就相反差不多。好了,問題解决了。感謝大家留言,。努力學習!!!!


其他答案4:

應該自己實現,獨立完成後找工作不成問題,沒獨立完成的話我看懸。而且畢業設計花錢買代碼應該不能畢業。


其他答案5:

如果不行,大家推薦一些網站或連接,找到實習後,我自己去學習


其他答案6:

删除:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER dbo.T_DELETE
   ON  dbo.TB_Import
   AFTER DELETE
AS 
BEGIN
    SET NOCOUNT ON;

    IF EXISTS(SELECT * FROM TB_Inventory WHERE Name_In = (SELECT Name_Im FROM deleted))

    UPDATE TB_Inventory SET Number_In = Number_In - (SELECT Number_Im FROM deleted)    
    WHERE Name_In = (SELECT Name_Im FROM deleted )

END
GO
 

版权声明:本文为[CSDN問答]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201072343579726.html