Luc*_*ano 6 mysql conditional on-duplicate-key
我做了一些研究,但似乎没有什么能满足我的需求.我有一个数据库表,其中包含从Web服务中恢复的一些数据.
用户为每个记录执行一些任务,然后将其标记为"已处理".所以我有一个额外的db字段(不是基于我从WS得到的数据),名为"processed",默认设置为0,当用户完成工作时为1.
每天我检查WS,如果状态代码更改我想更新行并设置回处理为0(因此用户可以再次处理它).
让我们说这是我的数据库......
+------+------------+-------+------------+
| id | statuscode | foo | processed |
+------+------------+-------+------------+
| 123 | 66 | bar | 1 |
+------+------------+-------+------------+
Run Code Online (Sandbox Code Playgroud)
我认为ON DUPLICATE KEY UPDATE有一些条件可以使它工作,也许有一些CASE或IF条件......我错了吗?任何建议都很好,谢谢!
这样的事情(警告:NULL价值没有得到照顾):
INSERT INTO tableX
(id, statuscode, foo, processed)
VALUES
(?, ?, ?, DEFAULT)
ON DUPLICATE KEY UPDATE
processed = CASE WHEN statuscode <> VALUES(ststuscode)
THEN 0
ELSE processed
END
, statuscode = VALUES(statuscode)
, foo = VALUES(foo) ;
Run Code Online (Sandbox Code Playgroud)