実際にはいくつかのメソッドには@Transactional(readOnly=true)
を使用しましたが、これらのメソッドは他のデータベースではうまくいく方法でnextVal()を実行しますが、Postgres 9.6.3では以下のエラーが発生します。は読み取り専用トランザクションでnextval()を実行できません
cannot execute nextval() in a read-only transaction
私はPostgresのメールのログを通過すると、このエラーが唯一の8.4.2 https://www.postgresql.org/message-id/BANLkTik9ikVUU-bznOhZHmLbdEx5fverCw%40mail.gmail.com
後に来ているところDBレベルでこの問題を解決するためにそこにどのような方法がありますがわかりました。
私はあなたの意見は理解していますが、Oracleとmysqlのシーケンス生成は完全にトランザクションが崩れているため、同じことが分かります。また、postgresは-a nextval操作も示しています決してロールバックされません。 –
postgresの読み取り専用トランザクションスコープからnextValを入れる方法はありますか? –
非常に良い点 - nextvalはトランザクション部分ではOKですが、 "read only"に対しては反対です。 'transaction_read_only'を' on'に設定した場合、トランザクションだけでなく読み取り専用セッションになります。多分それはあまりにも良い設定のための命名ではありません... –