2016-07-19 8 views
0

postgresqlシーケンスを使用して、シーケンスからnextvalを取得しようとしました。私はキャッシュ1を使用し、開始値は1です。しかし、私は例外的にマシンの電源を切って再起動した後、select nextval( 'patient_seq')が30または33にジャンプしたことがわかりました。そのシーケンスにキャッシュ1を使用しました。 なぜ誰も知っていますか? postgresqでのシーケンスの仕組みは?postgresql sequence jump 30または33、キャッシュが1の場合の数字

答えて

1

select nextval('patient_seq')に電話するたびに、使用しなくても&がインクリメントされます。

私はあなたがnextvalによって割り当てられた最後の値を与えるselect currval('patient_seq')を使用するつもりだと思います。

これにより、一連の挿入を実行して、最後に挿入された値が何であったかを確認できます。

+0

ありがとう、Phill。私はこの問題の根本原因を発見しました。 postgresは設定されたcache_valueより32をあらかじめ割り当てていたので、そのソースにはハードコードされています。電源を切ると、あらかじめ割り当てられた数値が失われ、別の32 + cache_value数が再割り当てされます。 – liya

関連する問題