重复密钥更新时插入始终更新所有值


Insert on duplicate key update always updates all values

我正在尝试更新一行或插入一个新的行(如果存在)。如果有更新,我只想用当前时间戳更新"更新"列,否则"添加"answers"更新"得到相同的值(时间戳)

//1385982893 is from PHP with time() cause it's needed elsewhere too
INSERT INTO table (id, code, added, updated) VALUES (236, 'abcdefghi', 1385982893, 1385982893)
ON DUPLICATE KEY UPDATE
id = values(id), code = values(code), added = values(added),updated = 1385982893

ID是主键。代码是唯一的

问题是"添加的"总是用当前的时间戳更新(如更新的)

您只需要删除added = values(added),它就不会更新:

INSERT INTO table (id, code, added, updated) VALUES (236, 'abcdefghi', 1385982893, 1385982893)
ON DUPLICATE KEY UPDATE
id = values(id), code = values(code),updated = 1385982893

然后不要在更新中设置添加

INSERT INTO table (id, code, added, updated) VALUES (236, 'abcdefghi', 1385982893, 1385982893)
ON DUPLICATE KEY UPDATE
id = values(id), code = values(code), updated = 1385982893