m0_46379381
栎夏。
2021-02-24 20:55
采纳率: 50%
浏览 164

商品出入库更新库存问题(C#与SQL SERVER)

我这是毕业设计的,界面和数据库都设计好了,各个功能也能实现,现在卡在数据库里,数据库真的不懂,感觉要触发器实现。希望有大佬有空帮下忙,请给出详细代码。 留下你的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,和数据结构,数据库不会用到,时间紧迫,就不想花时间重新学数据库了,以后工作用到,再回来重学,先度过眼前难关,谢谢大家)

 

  • 点赞
  • 收藏

6条回答 默认 最新

  • flybox0384
    flybox0384 2021-02-25 09:55
    已采纳

    能不用触发器就不用,实在影响性能,如果是项目的话架构一般会让你在业务规则层实现,目的是好维护好移植,考虑你是毕设建议你采用存储过程实现,至于如何编写存储过程,在CSDN上找吧关于库存的存储过程一大把,改改就行了。你要学的知识点 1:基于你系统使用的orm如何调用存储过程,2如何编写存储过程实现你上述业务-csdn有例程的。

    点赞 1 评论
  • m0_46379381
    栎夏。 2021-02-25 12:48

    哈哈哈,终于弄懂了,现在完成了入库表的触发器增,修

    增:
    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

    点赞 2 评论
  • m0_46379381
    栎夏。 2021-02-25 13:07

    入库表,全部功能实现,出库表,就相反差不多。好了,问题解决了。感谢大家留言,。努力学习!!!!

    点赞 1 评论
  • huanhuilong
    幻灰龙 2021-02-24 21:02

    应该自己实现,独立完成后找工作不成问题,没独立完成的话我看悬。而且毕业设计花钱买代码应该不能毕业。

    点赞 评论
  • m0_46379381
    栎夏。 2021-02-24 21:22

    如果不行,大家推荐一些网站或连接,找到实习后,我自己去学习

    点赞 评论
  • m0_46379381
    栎夏。 2021-02-25 13:06

    删除:

    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
     

    点赞 评论

相关推荐