以下は私のテーブルID column is Primary Key
です。他の 2 つの列は文字列です。
という名前の新しいデータベースを使用していXpressMP
ます。
Column Name
-------
ID PrimaryKey
SEARCHES String
ACCOUNT String
ここの機能を実現しようとしていますUPSERT
-
If ID doesn't exists here then insert a new record.
And ID exists then update the record.
私がOracleで作業している場合、MERGE
sqlコマンドを使用できますがMERGE
、そのデータベースではサポートされておらず、現在のところ他のコマンドはありません。しかし、私は で同じことができると信じていStored Procedure
ます。
ストアドプロシージャで同じことを行うにはどうすればよいですか?ストアドプロシージャがそこで機能するため。
更新しました:-
public final static String INSERT = "BEGIN"
+" INSERT INTO TABLE (ID, SEARCHES, ACCOUNT) VALUES (?, ?, ?)"
+" EXCEPTION"
+" WHEN DUP_VAL_ON_INDEX THEN"
+" UPDATE TABLE"
+" SET SEARCHES = ?, ACCOUNT = ?"
+" WHERE ID = ?"
+" END";
上記のストアドプロシージャをこのように実行しようとするたびに
preparedStatement = dbConnection.prepareStatement(INSERT);
preparedStatement.setString(1, String.valueOf(userId));
preparedStatement.setString(2, Constants.getaAccount(userId));
preparedStatement.setString(3, Constants.getaAdvertising(userId));
preparedStatement.executeUpdate();
例外が発生しますか? これはそれを実行する正しい方法ですか?