我有一个INSERT语句,今天使用参数标记从JDBC调用时有效:
INSERT INTO errorqueue as eq (jobname, sourceid, item) VALUES(?,?,?)
在我的Java代码中,我绑定了参数:
Connection connection=null;
PreparedStatement stmt=null;
try {
connection = getConnection();
stmt = connection.prepareStatement(sqlInsert);
stmt.setString(1, this.jobName);
stmt.setString(2, errorItem.getId());
stmt.setString(3, item.getBody());
stmt.executeUpdate();
} catch () {
...
}
我正在思考如果将此转换为UPSERT,需要如何处理参数:
INSERT INTO errorqueue as eq (jobname, sourceid, item) VALUES(?,?,?) ON CONFLICT (jobname,sourceid) UPDATE eq SET item=? Where jobname=? and sourceid=?;
这个问题有点隐晦,但在 INSERT 语句中参数顺序是 (a,b,c),但在更新语句中,参数绑定需要是 (c,a,b)。