2011-10-08 42 views
0

SQL可以执行更新计算吗?举例来说,存储的产品数量为,而后被售出,说的项目,我想更新留在product tables数量,SQL可以在更新上执行计算吗?

$sql_update = " 
    UPDATE store_products 
    SET 
     product_quantity = ? 
    WHERE store_products.product_id = ? 
    "; 

    $result = $connection->run_query($sql_update,array(
     3, 
     $product->product_id 
)); 

这可能吗?

+1

我不明白这个问题。你不是在寻找一个简单的更新?每次你销售一个自豪感时,你都会运行更新,减少销售的数量 –

+1

@MostyMostacho他正在谈论2个不同的表格,'product'和'store_products'看看他的更新声明。 – Icarus

+0

真正的问题是:为什么你将相同的信息(产品数量)保存在两张不同的表格中? –

回答

1

是 - 为了实现您所描述的,您需要实施一个AFTER UPDATE触发器。

有关详细信息和样本见:

编辑 - 作为根据注释的例子:

CREATE TRIGGER produpd AFTER UPDATE ON store_products 
    FOR EACH ROW BEGIN 
    UPDATE product SET quantity = quantity - NEW.product_quantity WHERE product_id = NEW.product_id; 
    END; 

这触发需要创建一世n你的MySQL DB ......当你从你的问题中执行SQL代码时,MySQL会调用这个触发器并更新products表。

+0

谢谢。只是看看你建议的链接,但我仍然不知道如何使用'后更新'...​​ – laukok

+0

看到我的编辑上面... – Yahia

+0

删除我的答案。仔细阅读关于可更新视图的mysql文档后,它清楚地表明,从视图中只有一个表中的列可以一次更新。在这种情况下没有用。 Upvoting这个答案。 – Icarus