0
根據字段值逐個選擇列表並更新記錄。如何避免重複更新和插入?選擇一個列表,並根據某個字段逐個更新記錄。如何避免重複更新?
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,和客戶記錄將被更新兩次!
如何避免這種情況?
是的!如果我將SD中的customer_id設置爲唯一,它就可以工作。但爲了與歷史數據和邏輯兼容,我無法做到這一點!你知道一些其他的解決方案,只是通過使用java代碼,而不是數據庫約束嗎? – footoss
@footoss你會請網站的歷史數據和邏輯的例子嗎?也許你沒有讓你的主主鍵父其它表列.. 例如: 你已經收到表格( receipt_no INT(10) –
@footoss請你的網站是什麼歷史數據和邏輯的例子嗎? 。也許üdidnt讓你的主主鍵父其它表列 例如: 你有 創建表回執( receipt_no INT(10), 主鍵(receipt_no)); 創建表receipt_info( receipt_no int(10), items varchar(50), 主鍵(receipt_no)); 看着這個例子,你有2票receipt_no。父母將在桌面收據中。更好的外鍵將receipt_info.receipt_no鍵入receipt.receipt_no –