'重复密钥更新'有一些逻辑

时间:2015-01-25 16:42:19

标签: php mysql mysqli

我正在处理网络报废项目,我用简单的html dom类完成了。现在我的客户希望我修改脚本以查看以前的结果并查找更改(并在找到更改时更新它们)。因此,我不是编写第二个脚本来进行更新,而是试图使原始脚本执行这两个功能。例如:如果产品已在数据库中,则使用on duplicate key update更新它。客户需要的第二个功能是他应该能够知道价格或库存是否更新。 on duplicate key update可以更新字段,但我怎么知道哪些更新?

mysqli_query($con, "insert into products (id,sku,style,price,stock) values ($id,'$sku','$style',$price,$stock) on duplicate key update set price=values(price), stock=values(stock)")

以上查询将更新价格和库存,我将如何知道价格是更新还是库存或两者兼而有之?我想基于此更新其他列。例如,列名stock_update的值为1已更新,同样适用于价格。可能是另一个问题?

请指教 提前致谢

2 个答案:

答案 0 :(得分:0)

我建议你改变方法。保留历史数据,而不是覆盖数据。因此,只需插入新记录及其新值和时间戳。然后使用其他逻辑来获取所需的摘要。

答案 1 :(得分:0)

如果您能够跟踪单独表格中的更改,则可以使用ProductId(FK),Stock,Price和modified_date创建一个新表格。使用代码中的逻辑来确定最后的更改。