irl*_*irl 1 mysql sql timestamp
我有一个加/减系统,用户可以在博客文章中添加一个或减一个.
我的数据库(MySQL)表如下所示:userid entry id vote - 这是+1或-1 timeStamp
我已将timeStamp设置为默认为CURRENT_TIMESTAMP.
我必须使用方法plus()和minus().两者都做同样的事情但是一个在'投票'中插入+1而另一个插入-1.由于(userid,entryid)是主键,我使用REPLACE INTO.INSERT INTO会出现重复错误.INSERT IGNORE不允许用户将投票从+1更改为-1
"REPLACE INTO votes(userid, entryid, vote) VALUES(:uid,:eid, -1)";
Run Code Online (Sandbox Code Playgroud)
忽略值..
虽然REPLACE INTO工作正常,但我按时间戳排序,所以当有人在投票后第二次点击+1时,它会更新时间戳,这会将其带到列表的顶部.
有人知道解决方案吗?
ps对不起的标题抱歉.想不出一个合适的人.
使用INSERT ... ON DUPLICATE KEY UPDATE MySQL的语法,您可以执行内联检查,并且仅在投票实际更改时更新时间戳:
INSERT INTO
votes
SET
userid = :uid,
entryid = :eid,
vote = :vote,
timeStamp = NOW() /* I'm being explicit here -- you don't need this */
ON DUPLICATE KEY UPDATE
vote = :vote,
timeStamp = IF(vote = :vote, timeStamp, NOW())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |