选择一个列表并根据某个字段值逐个更新记录。如何避免重复更新并插入?
public void takeOrder(String currentUser){
String sql = "select * from customer where take_status is null limit 30";
List<Customer> customerList = customerDao.findUnTakeCustomer(sql);
for(Customer cust : customerList){
if(cust.getEntryId > 3){
cust.setTakeStatus(1);
update(cust);
Sd sd = new Sd();
sd.setUser(currentUser);
sd.setCust(cust);
sd.setTakeTime(new Date());
sdDao.save(sd);
}
}
}
如果两个用户同时接受订单,则customerList可能具有相同的记录,然后重复记录将插入表SD中,并且客户记录将更新两次!
如何避免这种情况?
答案 0 :(得分:0)
在mysql中使用主键。
create table tablename(
yourPrimaryKey int(10),
otherColumns varchar(10),
primary key(yourPrimaryKey)
);
主键将是您每笔交易的唯一代码。就像任何方便商店的收据号码一样