现在,我有我的数据库设置,以便我插入一个新行。但是,如果我尝试插入的行是重复的(基于我的主键id
),那么我将计数字段增加1。
现在我想知道什么时候我能够创建一个新行而不是增加计数。我如何以有效/适当的方式做到这一点?
我正在考虑的当前方法是首先查询id
并检查它是否存在。但我觉得有更快/更好的方式。我也读过有关触发器的内容,但我听说它们使用起来不好/有风险。
答案 0 :(得分:2)
使用INSERT ... ON DUPLICATE KEY UPDATE...
然后查询affected_rows(如@Tarek Fadel建议的那样)。如果插入行,MySQL将返回1,如果现有行已更新,则返回2。
答案 1 :(得分:0)
使用数据库自动增加选项作为主ID字段。只有适当的解决方案。
这里有mysql引用,但只存在于每个数据库引擎中: http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
答案 2 :(得分:0)
id列上的auto_increment怎么样?
否则,您可以使用SELECT MAX(id) FROM TABLE
来检索最高ID并向其添加一个,但这不是线程安全的,因为另一个用户可能同时执行相同的插入。 Auto_increment为您修复了这个问题。
答案 3 :(得分:0)