插入新记录或通过更新值来更新记录

时间:2019-10-17 09:10:22

标签: mysql sql

我有一个购物车表。用户可以将产品添加到购物车。我正在使用php添加或插入记录。

购物车表包括:

CartID, CartProductID, CartQty, CartPrice, CartUserID

现在,用户应该不能再次在购物车表上添加相同的产品,但是如果产品存在,它应该更新CartQty的值。这样的更新可以使用什么sql?

如果产品已经存在于购物车中,我可以创建多个按钮并使用“隐藏并显示javascript”。

数据示例:

CartID, CartProductID, CartQty, CartPrice,CartUserID

1, 10, 1, 100, 4

2, 11, 2, 150, 4

现在,如果用户ID为4的用户想要再次将ProductID 10添加到购物车中,则应该基于数量输入字段添加CartQty值。

如果数量输入字段为3,则第1条记录应更新为:

1, 10, 4, 100, 4

3 个答案:

答案 0 :(得分:1)

有效架构的示例可能如下所示:

cart
 cart_id *
 user_id
 expiry_date

cart_detail
 cart_id *
 product_id *
 quantity

product
 product_id *
 date *
 price

* = (component of) PRIMARY KEY

答案 1 :(得分:0)

尝试使用SQL,假设@CartProductID = 10且@CartQty = 1

IF NOT EXISTS(SELECT 1 FROM Table1 WHERE CartProductID=@CartProductID)
BEGIN
    INSERT INTO Table1 (CartID, CartProductID, CartQty, CartPrice,CartUserID)
    VALUES (1, 10, 1, 100, 4)
END
ELSE
BEGIN
    UPDATE Table1 SET CartQty=CartQty+@CartQty WHERE CartProductID=@CartProductID
END

答案 2 :(得分:0)

在MySQL中,只要创建了正确的INSERT子句,就可以用ON DUPLICATE KEY UPDATE子句UNIQUE,根据我的说法,该子句应该是CartID, CartProductID, CartUserID

有关ON DUPLICATE KEY的更多信息,请参见https://mariadb.com/kb/en/library/insert-on-duplicate-key-update/