mySQL / Java中的安全数据更新

svmlkihl  于 2023-01-29  发布在  Mysql
关注(0)|答案(1)|浏览(77)

这里我遇到了一个两难的问题,假设我们有一个像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")
}

实践中比较安全常用的方式是什么?
请分享你的建议。

b91juud3

b91juud31#

这里可能的方法是继续SQL查询。查询执行后,检查ticketDAO.update方法中修改的行数。如果0行被修改,则抛出异常DAOException。

相关问题