需要使用Update SQL JOIN归档成功购物车事务的数据

时间:2016-12-27 22:52:56

标签: mysql sql-server

我需要在店面购买产品时归档产品。我正在考虑做一个SQL JOIN但不确定......

这是我需要运行的查询吗?

  UPDATE product 
  INNER JOIN cart on cart.product_id = product.id
  SET product.archive = 1

id (int)
product_id (int)
quantity (int)

产品

id (int)
name (varchar 45)
price (decimal 10,2)
quantity (int)
image (varchar 255)
archive (tinyint) default 0

2 个答案:

答案 0 :(得分:0)

这似乎是你想要使用触发器的情况。每次在Cart表中添加新行时,它都应该将product.archive更新为1(或对Product表的任何其他更改)。

DELIMITER $$
CREATE TRIGGER tg
    AFTER INSERT ON Cart
    FOR EACH ROW
BEGIN
    UPDATE Product
        SET archive = 1
        WHERE Product.id = NEW.product_id;
END $$

请注意我是MySQL的新手,我不确定这是否是正确的方法。

答案 1 :(得分:0)

更新查询

让我们仔细研究这个问题

  UPDATE product 
  INNER JOIN cart on cart.product_id = product.id
  SET product.archive = 1

这个查询有什么作用?它存档已放入至少一个用户购物车的每个产品。当然,这不是你想要的?您的购物车表中没有用户ID。你确定购物车中的哪个项目属于哪个用户?请考虑在表格中添加这样的列。

存档或不存档

产品只有在数量达到零时才能存档吗?但它应该归档吗?如果每个查询中的表中都有一个存档列,则需要有一个检查此标志的子句

SELECT * FROM product WHERE archive = 1   /* or 0 */

但是这个归档列只能取两个值中的一个,这使得该列上的索引完全无用。因此,随着数据的增长,您的查询将变得越来越慢。