【发布时间】:2017-11-23 19:26:17
【问题描述】:
我有以下场景:
1. DELETE FROM my_table WHERE user_id = ?; // Prepared statement.
2. INSERT INTO my_table VALUES(?, ?, ..., ?); // Also a prepared statement.
问题 1
假设有两个客户端(我们称它们为A 和B)执行上面的两个操作。 有没有可能所有四个操作都执行如下?
-
A执行操作 1。 -
B执行操作 1。 -
A执行操作 2。 -
B执行操作 2。
(当我只想要 1 行时,这将引入 2 个新行。)
问题 2
如果问题 1 的答案是肯定的,我该如何禁用上述“交错”。或者换句话说,我怎样才能确保A首先执行操作1和2,然后然后 em> B 执行这两个操作。另外,如何用 JDBC 来实现呢?
【问题讨论】:
-
你读过transaction吗?
-
@YCF_L 所以我首先禁用自动提交,进行更新并调用显式提交,对吗?
-
是的,你必须把这两个操作放在同一个事务中,你可以在谷歌找到很多好文章,但我认为我分享的一篇可以帮助你