使用值如果存在则使用默认值MySQL

时间:2016-05-28 01:57:04

标签: java mysql

当前工具:使用Java与MySQL通信

我尝试多次搜索并最终得到了这个,但它并没有帮助我解决我的问题。 Google Search

我正在编写一些查询语句,试图将有关游戏对象的一些信息保存到数据库中。我想保存对象的ID号(如果它不是0),并使用自动增量功能,否则如果它 0.例如:

// (?,?) = (itemid, amount)
// itemid -> primary key and auto increment. 

PreparedStatement ps = db.prepareStatement("INSERT INTO items (?,?)");
ps.setInt(1, item.id() == 0 ? >>>>DEFAULT<<<< : item.id());
ps.setInt(2, item.quantity());

问题当然是我正在做的方式并不是告诉MySQL自动增量的正确方法。有办法吗?此外,我故意插入ID即使它自动增加的原因是我之前编写了一个方法,允许我保存项目的原始状态(从而保留其统计信息)。加载此项目后,我希望能够用新加载的项目替换当前项目及其统计信息。

主要问题:希望能够在满足条件时插入值,否则请尽可能使用主键自动增量。如果我的方法有问题,我会张开耳朵。目前是数据库初学者!

2 个答案:

答案 0 :(得分:1)

编辑:

根据MySQL建议,如果在id列中插入0,该列将自动生成序列号。

此处:http://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html

请注意,在创建表时,应将列(id)设置为AUTO-INCREMENT。自动增量将从1开始,因此我插入0将插入下一个最大数字。

PreparedStatement ps = db.prepareStatement("INSERT INTO item(id, quantity) VALUES(?,?)");
ps.setInt(1, item.id());
ps.setInt(2, item.quantity());

答案 1 :(得分:0)

试试吧

PreparedStatement ps = db.prepareStatement("INSERT INTO items (?,?)");
ps.setInt(1, (item.id() == 0 ? 0 : item.id()));
ps.setInt(2, item.quantity());