私は単純なJavaプログラムを作成しました。これは、トランザクションを開き、レコードを選択し、ロジックを実行してから更新します。レコードをロックして、SELECT ... FOR UPDATEを使用します。SELECT FOR UPDATEがJDBCとOracleで動作しない
プログラムはMS SQL Server 2005では正常に動作しますが、Oracle 10gではレコードはロックされていません。
理由は何ですか?
私は次のように接続を作成します。私は、Oracle SQL DeveloperのクライアントからSELECT..FORのUPDATEを実行すると、私はレコードがロックされていることがわかります
Connection connection = DriverManager.getConnection(URL, User, Password);
connection.setAutoCommit(false);
ので、私はそれがあるかもしれないと思っていますデータベースの問題ではなくJDBCドライバで問題が発生しますが、オンラインで役立つものは何も見つかりませんでした。
これらは、私が使用しているJDBCドライバの詳細、次のとおりです。
Manifest-Version: 1.0
Implementation-Vendor: Oracle Corporation
Implementation-Title: ojdbc14.jar
Implementation-Version: Oracle JDBC Driver version - "10.2.0.2.0"
Implementation-Time: Tue Jan 24 08:55:21 2006
Specification-Vendor: Oracle Corporation
Sealed: true
Created-By: 1.4.2_08 (Sun Microsystems Inc.)
Specification-Title: Oracle JDBC driver classes for use with JDK14
Specification-Version: Oracle JDBC Driver version - "10.2.0.2.0"
あなたが経験する問題について具体的にお聞かせください:何がうまくいかないのですか? –
SELECT ... FOR UPDATEはレコードをロックしません。別のプログラムから同じレコードを同時に更新しようとすると、トランザクションがコミットまたはロールバックされるまでこれらのレコードがロックされていることがわかります(これはSQL Serverで実際に起こります)。 – Gep