对SQL SERVER 2012中的多个项目进行单个事务

时间:2019-02-16 15:36:17

标签: sql-server vb.net

为我的POS帮助我。我正在做快餐交易。我真的对构建交易代码感到困惑。我想这样做

ID!交易编号!产品名称 !

<label class="fullWidth">
        <input type="radio" name="selectAddress" class="card-input-element d-none hideOffScreen addressRadio" id="address1" value="address1">
        <div class="card card-body bg-light d-flex flex-row justify-content-between align-items-center radioCard">
            <div class="addressField">John Doe</div>
            <div class="addressField">123 Anytown St.</div>
            <div class="addressField">Springfield, MD 22365</div>
            <div class="row">
                <div class="col-md-12 text-left">
                    <div class="deliverButton" style="margin-top:12px;">
                        <div type="button" class="btn btn-primary-custom" style="margin-right:10px;">Deliver to this Address</div>
                    </div>
                    <div class="selectedAddressButton" style="margin-top:12px;">
                        <div style="margin-top:12px;">
                            <div type="button" class="btn btn-success-custom" style="margin-right:10px;"><i class="fa fa-check" aria-hidden="true" style="padding-right:6px;"></i>Selected Address</div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-12 text-left =" style="margin-top:15px;">
                    <button type="button" class="btn btn-secondary-custom" style="margin-right:10px;">Edit</button>
                    <button type="button" class="btn btn-secondary-custom">Delete</button>
                </div>
            </div>
        </div>
</label>
它更像是。抱歉,如果我的代码不清楚,请理解我。这是我第一次问。谢谢

下面的代码是我将其插入数据库的模式,但交易ID不会像上面那样。

ID ! TRANSACTIONID ! PRODUCT
1     TR1             DISH1
2     TR1             DISH2
3     TR2             DISH3
4     TR3             DISH4
5     TR3             DISH5
6     TR3             DISH2

2 个答案:

答案 0 :(得分:1)

我个人会编写一个存储过程来进行插入,然后使用相同的参数调用该存储过程。

过程看起来像这样

CREATE PROCEDURE dbo.AddTransaction @productname      VARCHAR(100)
                                   ,@employeename     VARCHAR(100)
                                   ,@producttotal     INTEGER
                                   ,@productquantity  INTEGER
                                   ,@transactionstate VARCHAR(100)
AS
BEGIN

  DECLARE @ProductId INT, @EmployeeId INT;

  SELECT @ProductId = productID FROM dbo.Product WHERE ProductName = @productname;

  SELECT @EmployeeId = SELECT EmployeeID FROM dbo.Employees WHERE name = @EmployeeName;

  INSERT INTO dbo.Emp_Transaction(ProductName,EmployeeName,TotalPrice,Transaction_Date,Transaction_Time,ProductQuantity,TransactionState
                                 ,ProductId, EmployeeId)
    VALUES(@productname,@employeename,@producttotal,GETDATE(),GETDATE(),@productquantity,@transactionstate
          ,@ProductId, @EmployeeID );

END;

当然,您可能需要稍微更改数据类型。

话虽如此,您的Emp_Transaction表似乎至少存在一个问题,因为它没有被“规范化”。

该表中的ProductId和ProductName均未规范化,因为一个是直接从另一个中派生的。 您可能应该删除ProductName

EmployeeId和EmployeeName相同

另一个细节是,最好始终指定表的架构名称,例如 dbo.Emp_Transaction 而不是 Emp_Transaction

答案 1 :(得分:0)

您应该尝试以下方法:尝试首先直接在数据库中运行insert语句,这将帮助您了解查询是否正确,一旦这样做,则应将查询放入代码中,然后调试代码。