在执行INSERT时,使用计数器将数字添加到值中

本文关键字:数字 添加 计数器 INSERT 执行 | 更新日期: 2023-09-27 18:19:25

现在,我有一个函数,当调用它时,它会将一个新的购物篮项目插入到数据库中。我想改变的是[Sku]参数的设置方式。我想尝试使用一个计数器变量和一个字符串值(在这种情况下,字符串值是"SetupFee"),这样每个插入的项目的Sku参数都不同。

例如,如果有5个项目,我希望计数器变量将1、2、3、4等添加到Sku参数中,这样每个产品都有不同的Sku。这有点奇怪,但根据事情的安排,这是最好的选择。我只是以前从未尝试过将计数器作为查询的一部分。关于如何处理这个问题,有什么建议吗?

这就是我的功能:

     protected void UpdateBasketItems(int BasketID, string BasketItemName, decimal FeeAmount, int ProductId)
    {
        try 
        { 
            int count = 0;
            Basket basket = AbleContext.Current.User.Basket;
            IList<BasketItem> items = GetBasketItems();
            string query = "INSERT INTO ac_BasketItems ([ParentItemId], [BasketId], [BasketShipmentId], [ProductId], [TaxCodeId], [Name], [Sku], [Price], [Weight], [Quantity], [OrderItemTypeId], [OrderBy], [ShippableId], [LastModifiedDate], [TaxAmount], [TaxRate], [CreatedDate] )VALUES (0, @BasketID, (SELECT MAX(BasketShipmentId) FROM [ac_BasketItems] WHERE [BasketID] = @BasketID), 19524, 1,'" + BasketItemName + "','SetupFee'," + FeeAmount + ", 0, 1, 0, 999, 0, Current_TimeStamp, 0, 0, Current_TimeStamp)";
            using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["AbleCommerce"].ToString()))
            {
                cn.Open();                
                SqlCommand cmd = new SqlCommand(query, cn);
                cmd.Parameters.Add(new SqlParameter("@BasketID", BasketID));
                cmd.CommandType = CommandType.Text;
                cmd.ExecuteNonQuery();
                cn.Close();
            }
        }
        catch (Exception x)
        {
            Response.Write("ERROR with UpdateBasketItems(): " + x.Message.ToString() + "<br />");
        }
    }

在执行INSERT时,使用计数器将数字添加到值中

MS SQL Server的一个简单(内置功能):

最简单的方法是在要插入的表中创建一个identity列。您可以使用SCOPE_IDENTITY()函数在插入后获得该值。

但是,如果表已经有一个现有的标识列(不能使用),则可以创建一个只有一行的Sequence表。该行将包含next_seq值,插入后您将获得该值并更新+1