【问题标题】:insert and update two tables using procedure使用过程插入和更新两个表
【发布时间】:2015-09-22 21:20:42
【问题描述】:

我想创建相关的存储过程来处理购买。将数据插入 itemPurchase 表并更新 Item 表。

CREATE PROC [dbo].[ItemPurchaseProc]
    --@id int
    @ItemPrice float,
    @Itemqty int
AS
BEGIN
    insert into ItemPurchase(ItemPrice, ItemQty, ItemTotal) 
    values (@ItemPrice, @Itemqty, @ItemPrice * @Itemqty)

    Update Item
    Set StkCount =- @Itemqty 
END

这是我写的。下面是两张表。告诉我如何创建这个过程。提前致谢!

CREATE TABLE dbo.Item
(
    ItemCode AS 'IT' + RIGHT('000' + CAST(id as varchar(10)), 3) PERSISTED,
    id int NOT NULL IDENTITY (1,1),
    CONSTRAINT PK_Item PRIMARY KEY CLUSTERED (ItemCode),

    Item_Desc varchar(30),
    Quantity int,
    MinStkLvl int,
    SalesPrice float,
    StkCount int
);

CREATE TABLE dbo.ItemPurchase
(
    InvCode AS 'IN' + RIGHT('000' + CAST(id as varchar(10)), 3) PERSISTED,
    CONSTRAINT FK_InvCode1 
        FOREIGN KEY (InvCode) REFERENCES Invoice(InvCode) 
        ON DELETE CASCADE,
    id int NOT NULL IDENTITY (1,1), 
    ItemCode AS 'IT' + RIGHT('000' + CAST(id as varchar(10)), 3) PERSISTED,
    CONSTRAINT FK_ItemCode1 
        FOREIGN KEY (ItemCode) REFERENCES Item(ItemCode) 
        ON DELETE CASCADE,
    ItemPrice float,
    Itemqty int,
    ItemTotal float 
);

【问题讨论】:

    标签: sql-server stored-procedures


    【解决方案1】:

    不清楚你需要什么。

    但是,对表的 2 个操作需要在一个事务中。

    -您应该在此处添加更新 MinStkLvl 的业务逻辑。也许触发一个触发器(?)或调用另一个存储过程......

    CREATE PROCEDURE [dbo].[HandlePurchase]
    (
        @itemId                 int,
        @qty                    int,
        @double                 price
    )
    AS
    BEGIN TRANSACTION;
         BEGIN TRY
    

    --在此处将您的更新写入表格 --在更新项目表之前再次检查最低库存水平 --你的业务逻辑

         COMMIT
         END TRY
    BEGIN CATCH
            ROLLBACK;
            PRINT ERROR_MESSAGE();
    END CATCH   
    

    【讨论】:

    • 发票是在向特定客户销售产品时创建的。发票应有发票编号、日期、客户详细信息、购买的项目、项目代码、描述、价格、数量和总价。创建发票后,应立即更新当前库存计数。当库存计数自动达到最低库存水平时,应将重新订购项目的详细信息发送到数据库中的新表。我想要一个创建新发票并使用这些更新处理购买的程序..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多