0

updateステートメントにはデータが既に存在している必要があると思いました。

私はJavaアプリをサポートしています。一部のコードの以前の開発者は、delete ステートメントを使用してレコードをクリアし、update ステートメントを使用してデータをテーブルに挿入し直していました。

テーブルにデータを挿入または更新するために update ステートメントを使用できますか???

データベースはオラクルエクスプレスです。それは違いを生むべきではありません。

4

2 に答える 2

1

MERGE同じ結果を得るためにステートメントを使用してみることができます。ステートメントを使用MERGEすると、新しいレコードをテーブルに挿入するか、データがすでに存在する場合は更新することができます。

MERGEステートメントの構文を見つけてください。

MERGE INTO <table_name>
USING <table_view_or_query>
ON (<condition>)
WHEN MATCHED THEN <update_clause>
DELETE <where_clause>
WHEN NOT MATCHED THEN <insert_clause>;

おそらく、あなたはあなたの問題についてより多くの詳細を与えることができます。私はこれがあなたが必要としているものだと思います。

于 2012-12-26T04:41:11.033 に答える
0

Query は org.hibernate.Query のインスタンスです。クエリの休止状態のドキュメントを見てください。更新で例外がスローされるはずですが、そうではありません。コードがバッファをフラッシュしていないという事実が、更新が例外をスローしていない理由である可能性がありますか???

String deleteQueryString = String.format("delete FROM %s WHERE personId = %s and deptId = %s and active = true", table, person.getId(),dept.getId());

Query deleteQuery = Persistence.reportContext().session().createQuery(deleteQueryString);
int deletedCount = deleteQuery.executeUpdate();
log.debug(String.format("%20s (%4s): %s", "delete query", deletedCount, deleteQueryString));

String updateQueryString = String.format("update %s set activeSet = true WHERE personId = %s and deptId = %s and activeSet = false", table, person.getId(), dept.getId());

Query updateQuery = Persistence.reportContext().session().createQuery(updateQueryString);
int updatedCount = updateQuery.executeUpdate();
于 2012-12-26T07:35:52.820 に答える