我的请求有问题,我必须更新我的现有字段并且不进行插入,因为它将被复制,并且我已经知道ON DUPLICATE KEY UPDATE或REPLACE,但是它不起作用,目标是更新我的产品数量,不要插入一些。我尝试通过触发器进行操作,但也无法正常工作,您能解决我的问题吗?
INSERT INTO cart(product_id, quantity) VALUES (4, quantity +1 )
但是,如果该产品已经存在,它会向我添加一行,并且我想知道它不是关键,所以我希望它能够自动检测到它来更新
UPDATE cart SET quantity = quantity+1 WHERE id= id
这是我的触发器:
BEGIN
IF EXISTS (SELECT product_id FROM cart WHERE product_id = NEW.product_id)
THEN
UPDATE cart SET quantity = NEW.quantity WHERE id = NEW.user_id;
ELSE
INSERT INTO cart(product_id, quantity) VALUES (NEW.product_id, NEW.quantity);
END IF;
END
这是一个问题: 相同的两行,对于这个示例,我想像ID为1的行一样一行
非常感谢,并感谢我的参与和表达。
答案 0 :(得分:2)
无需触发器。您可以使用MySQL insert ... on duplicate key
syntax。
insert into cart(product_id, quantity)
values (4, 1)
on duplicate key update quantity = quantity + values(quantity)
要使其正常工作,您需要在列product_id
上使用唯一约束(或主键约束)。
使用这种语法,如果一条记录已经存在且与您要插入的记录相同,则product_id
会执行update
,这会将新的quantity
添加到现有记录。