增加MySQL

时间:2009-04-08 16:28:40

标签: mysql

我尝试在mysql中增加一个字段,但似乎它由于某些原因而无法正常工作......

这是我在mysql查询中运行的查询:

UPDATE profil_perso
SET profile_views = profile_views +1
WHERE id = 30537

在状态栏中显示:受最后一个命令影响的1行。没有返回结果集。但它似乎没有奏效。起初我认为这只是因为根本没有行。然后我运行了这个查询:

SELECT *
FROM profil_perso
WHERE id = 30537

找到1行,profile_views字段仍为0 ...

为什么会出现这种情况的任何想法?

[编辑] 此时,profile_views = 1(手动设置)仍然无效。

4 个答案:

答案 0 :(得分:3)

使用InnoDB表时,您是否忘记提交交易?

<强>更新

由于它是MyISAM,我还会问几个愚蠢的问题:

  1. 您确定要对一个数据库发出UPDATESELECT吗?

    我曾经拥有一个拥有相同架构的大型数据库,当有人从错误的数据库中删除某些东西时,这曾经是一个问题。

    • 您是不是在客户端使用某种客户端缓存?你在用什么客户?
  2. 尝试REPAIR你的桌子,这也可能是问题。

答案 1 :(得分:2)

只是为了验证 - 是profile_views为零还是null?如果你将1添加到null,你仍然会得到null,这可能是你的问题。

ETA:

所以它不是空的。下一个问题是,你有自动提交,或者,如果没有,你是否发出了“提交”?可能是它已更新,但您的更新从未提交过。

答案 2 :(得分:1)

如果它为null,则不会递增。

UPDATE profil_perso
SET profile_views = IF(profile_views,profile_views+1,1)
WHERE id = 30537

答案 3 :(得分:0)

添加一些parens和coalesce以查看是否修复了它:

UPDATE profil_perso
SET profile_views = ( COALESCE(profile_views,0) + 1 )
WHERE id = 30537