首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用REPLACE INTO更新表中的时间戳

使用REPLACE INTO更新表中的时间戳
EN

Stack Overflow用户
提问于 2009-09-16 19:00:54
回答 1查看 3K关注 0票数 1

我有一个加/减系统,用户可以从博客帖子中添加一个或减一个。

我的数据库(MySQL)表看起来像这样: userid entry id vote -它是+1或-1 timeStamp

我已经将timeStamp默认设置为CURRENT_TIMESTAMP。

我必须使用方法plus()和minus()。两者都做同样的事情,但一个插入+1到'vote‘,另一个插入-1。因为(userid,entryid)是主键,所以我使用REPLACE INTO。INSERT INTO会出现重复错误。插入忽略不允许用户将投票从+1更改为-1

代码语言:javascript
复制
"REPLACE INTO votes(userid, entryid, vote) VALUES(:uid,:eid, -1)";

忽略这些值..

虽然REPLACE INTO工作得很好,但我是按时间戳排序的,所以当有人在投票后第二次点击+1时,它会更新时间戳,这会将它带到列表的顶部。

有人知道解决这个问题的办法吗?

另外,很抱歉这个糟糕的标题。想不出一个合适的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-16 19:09:23

使用MySQL的INSERT ... ON DUPLICATE KEY UPDATE Syntax,您可以执行内联检查,并且只有在投票实际发生变化时才更新时间戳:

代码语言:javascript
复制
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())
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1434873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档