簡體   English   中英

T-SQL插入購物車,其他情況不起作用-更新

[英]T-SQL insert to shopping cart, goes in the worong else - UPDATED

嗨,我不知道如何解決這個問題

UPDATE寫入新的sql,但存在相同的錯誤。 調試時我知道錯誤。 在每個其他情況下都這樣做:

    SET @ShoppingCartId = SCOPE_IDENTITY()
    INSERT INTO ShoppingCartItems(ShoppingCartId,ProductID, Quantity)
    VALUES(@ShoppingCartId, @ProductID, @Quantity)

如果購物車不存在,那只會發生。

如果有一種方法可以在完成后打破代碼,那么它將解決該問題。

購物車

購物車

購物車項目

購物車項目

儲存程序

IF EXISTS(SELECT ShoppingCart.ShoppingCartId FROM ShoppingCart WHERE 

ShoppingCart.ShoppingCartId = @ShoppingCartId)
--if shoppingcart exists
--check if product exists
IF EXISTS(SELECT ShoppingCartItems.Id FROM ShoppingCartItems WHERE ShoppingCartItems.ProductID = @ProductID AND ShoppingCartItems.ShoppingCartId = @ShoppingCartId)
--Om produkten existerar
BEGIN
UPDATE ShoppingCartItems
SET Quantity = Quantity + 1
WHERE ProductID = @ProductID AND ShoppingCartItems.ShoppingCartId = @ShoppingCartId
END
ELSE
--of product dont exists
BEGIN
    INSERT INTO ShoppingCartItems(ShoppingCartId,ProductID, Quantity)
    VALUES(@ShoppingCartId, @ProductID, @Quantity)
    END
ELSE
--if shoppingcart dont exists
--Insert new shoppingcart
    INSERT INTO ShoppingCart(UserID, DateAdded)
    VALUES(@UserID, GETDATE())
    SET @ShoppingCartId = SCOPE_IDENTITY()
    INSERT INTO ShoppingCartItems(ShoppingCartId,ProductID, Quantity)
    VALUES(@ShoppingCartId, @ProductID, @Quantity)

我得到的結果是:

第一次執行

EXEC    @return_value = [dbo].[AddShoppingCart]
        @ProductID = 1,
        @Quantity = 1,
        @UserID = NULL,
        @ShoppingCartId = NULL

和第二次執行

EXEC    @return_value = [dbo].[AddShoppingCart]
    @ProductID = 1,
    @Quantity = 1,
    @UserID = NULL,
    @ShoppingCartId = 1

這里的一切看起來都很好

在此處輸入圖片說明在此處輸入圖片說明

但是我收到一條錯誤消息。

(受影響的1行)消息515,級別16,狀態2,過程AddShoppingCart,第26行無法將值NULL插入表“ MustTest.dbo.ShoppingCartItems”的“ ShoppingCartId”列中; 列不允許為空。 INSERT失敗。 該語句已終止。

經過第三次測試后,當我嘗試將第二個產品插入同一購物車時

EXEC    @return_value = [dbo].[AddShoppingCart]
    @ProductID = 2,
    @Quantity = 1,
    @UserID = NULL,
    @ShoppingCartId = 1

我的結果全錯了,它兩次插入產品2次,第二次插入我沒有放入的ShoppingCartId。

在此處輸入圖片說明

我認為現在正在運作

    ALTER PROCEDURE [dbo].[AddShoppingCart]
    @ProductID int,
    @Quantity int,
    @UserID nvarchar(128),
    @ShoppingCartId int
AS
IF EXISTS(SELECT ShoppingCart.ShoppingCartId FROM ShoppingCart WHERE ShoppingCart.ShoppingCartId = @ShoppingCartId)
    --Om kundvagnen existerar
    --Kolla om produkten existerar
    IF EXISTS(SELECT ShoppingCartItems.Id FROM ShoppingCartItems WHERE ShoppingCartItems.ProductID = @ProductID AND ShoppingCartItems.ShoppingCartId = @ShoppingCartId)
    --Om produkten existerar
        BEGIN
            UPDATE ShoppingCartItems
            SET Quantity = Quantity + 1
            WHERE ProductID = @ProductID AND ShoppingCartItems.ShoppingCartId = @ShoppingCartId
        END
    ELSE
--Om inte produkten existerar
    BEGIN
        INSERT INTO ShoppingCartItems(ShoppingCartId,ProductID, Quantity)
        VALUES(@ShoppingCartId, @ProductID, @Quantity)
    END
ELSE
--Om Kundvagnen inte existerar
--Insert ny kundvagn
    BEGIN
        INSERT INTO ShoppingCart(UserID, DateAdded)
        VALUES(@UserID, GETDATE())
        SET @ShoppingCartId = SCOPE_IDENTITY()
        INSERT INTO ShoppingCartItems(ShoppingCartId,ProductID, Quantity)
        VALUES(@ShoppingCartId, @ProductID, @Quantity)
    END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM