作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的请求有问题,我必须更新我现有的字段而不是插入,因为它会被复制,我已经知道 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;
结束
这是一个问题:两行相同,对于这个例子,我希望一行像 id 1
非常感谢,对不起我的英语和表达
最佳答案
不需要触发器。您可以使用 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
,添加新的数量
到现有记录。
关于mysql - 如果特定列存在字段,如何更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645955/
我是一名优秀的程序员,十分优秀!