这是购物车的表结构
如果表中不存在新的user_id
和product_id
组合,我想插入一行,否则我只想在组合存在的情况下更新quantity
。我的目的是更新数据库中某人的购物车,如果有新商品则插入。
例如,如果我已将这些数据存在于表格中
如果我有这些数据组(1,23,5),它只会更新第一行中的quantity
,因为组合(1,23)已经存在
如果我有这些数据组(1,38,1),将插入一个新行,因为组合(1,38)不存在
答案 0 :(得分:1)
为您不希望重复的值定义唯一索引:
create unique index idx_shoppingcart_user_product on shoppingcart(userid, productid)
然后,不允许将这些两个列复制在一起。 (注意:您还可以使用unique
中的primary key
或create table
来定义此约束。)
然后使用on duplicate key
:
insert into shoppingcart(user_id, product_id, quantity)
select . . .
on duplicate key update
quantity = quantity + values(quantity);
或者,或许,
on duplicate key update
quantity = values(quantity);
“只更新quantity
”,您的问题含糊不清。
答案 1 :(得分:0)
您可以以编程方式执行此操作。或者创建一个复合主键:
CREATE TABLE INFO (
user_id INT,
product_id INT,
PRIMARY KEY (user_id, product_id));