在DUPLICATE KEY UPDATE上
MySQL有这样的东西:
INSERT INTO visits (ip, hits)
VALUES ('127.0.0.1', 1)
ON DUPLICATE KEY UPDATE hits = hits + 1;
据我所知,这个功能在SQLite中不存在,我想知道的是,如果有任何方法可以存档相同的效果而不必执行两个查询。 另外,如果这是不可能的,你更喜欢什么:
INSERT OR IGNORE INTO visits VALUES ($ip, 0);
UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;
这要求“ip”列有一个UNIQUE(或PRIMARY KEY)约束。
编辑:另一个伟大的解决方案:https://stackoverflow.com/a/4330694/89771。
我更喜欢UPDATE (+ INSERT if UPDATE fails)
。 更少的代码=更少的错误。
当前的答案只能在sqlite或mysql中使用(取决于你是否使用OR)。 所以,如果你想交叉dbms兼容性,下面会做...
REPLACE INTO `visits` (ip, value) VALUES ($ip, 0);
链接地址: http://www.djcxy.com/p/19787.html