繁体   English   中英

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

[英]Inserting new record or updating record by updating a value

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

购物车表包括:

CartID, CartProductID, CartQty, CartPrice, CartUserID

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

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

数据示例:

CartID, CartProductID, CartQty, CartPrice,CartUserID

1, 10, 1, 100, 4

2, 11, 2, 150, 4

现在,如果具有 4 的 UserID 想要再次将 ProductID 10 添加到购物车中,则 CartQty 值应根据 qty 输入字段相加。

如果 qty 输入字段为 3,则第一条记录应更新为:

1, 10, 4, 100, 4

有效模式的示例可能如下所示:

cart
 cart_id *
 user_id
 expiry_date

cart_detail
 cart_id *
 product_id *
 quantity

product
 product_id *
 date *
 price

* = (component of) PRIMARY KEY

试试看,在 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

在 MySQL 中,您可以使用ON DUPLICATE KEY UPDATE子句INSERT ,前提是您创建了正确的UNIQUE子句,据我说,它应该是CartID, CartProductID, CartUserID

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM