这里我遇到了一个两难的问题,假设我们有一个像enter image description here这样的sql表
当两个或多个用户覆盖表中的数据时,可能会出现问题。
在更新数据之前,我应该如何检查该位置是否未被占用?
我有两个选择
1.在SQL查询中:
UPDATE ticket SET user_user_id = ? WHERE place = ? AND user_user_id is NULL
1.或在服务层中:
try {
Ticket ticket = ticketDAO.read(place)
if (ticket.getUser() == null) {
ticket.setUser(user)
ticketDAO.update(ticket)
}else {
throw new DAOException("Place has been already tooken")
}
实践中比较安全常用的方式是什么?
请分享你的建议。
1条答案
按热度按时间b91juud31#
这里可能的方法是继续SQL查询。查询执行后,检查ticketDAO.update方法中修改的行数。如果0行被修改,则抛出异常DAOException。