我有这样的场景,在航空公司网站上(使用 Java),两个不同的客户同时发送两个请求以预订同一家航空公司的同一个座位
从纽约到芝加哥。我使用的是oracle数据库,隔离级别是读已提交。我的问题是oracle数据库是否提供
有什么解决方案来处理这种并发场景吗?我所知道的是,当第一个事务 DML 语句被触发时,它将锁定受影响的对象
行并将在事务完成时释放,即发出回滚或提交。但是一旦提交完成,第二个请求将立即继续
第一个已完成并将覆盖第一个。那么这没有帮助吗?
是的,在Java中,我可以将我的数据库类设置为单例,并在执行更新的方法上使用synchronized关键字。但想知道有没有
无论如何,我们可以在数据库级别本身解决这种问题吗?可能串行化的隔离级别可以提供帮助。但不确定?
只有在您允许的情况下它才会覆盖。你可以尝试类似的东西
UPDATE seatTable
SET seatTaken = true
WHERE .. find the seat, flight etc.. AND seatTaken = false
这将返回第一次更新的 1 行和之后更新的 0 行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)