私はpostgresqlシーケンスをテストしていました(PostgreSQL 9.3でhttp://sqlfiddle.comを使用していましたが、現時点ではPostgreSQLのセットアップをローカルに持っていません)が、私は奇妙な動作を見ていました。PostgreSQLシーケンスnextval()strange behavior
その後シーケンス
CREATE SEQUENCE counter_seq;
ALTER SEQUENCE counter_seq RESTART 9223372036854775805;
を作成シーケンスfromt次の値を選択:
SELECT nextval('counter_seq');
は結果が9223372036854776000
たBIGINTの範囲外にありますか!?!?
シーケンス自体が正しく更新されたように見えましたが(選択した数がERROR: nextval: reached maximum value of sequence "counter_seq" (9223372036854775807)
の場合は失敗しますが)、実行したときにはnextval
の結果が正しくありませんでした。
私は、はるかに低いと配列を設定してみました:
ALTER SEQUENCE counter_seq RESTART 5223372036854775805;
SELECT nextval('counter_seq');
をしかし、結果は以下のとおりであった:
5223372036854776000
私は5000000000000000
にシーケンス値を落としたまで、私は信頼性の高い動作を得ることができませんでした。
これはpostgresqlのバグかsqlfiddleですか?
もう1つのセッションはロールシーケンスですか? –
おそらく、私は異なるシーケンス名でsqlfiddleをテストして同じことをしました正確な結果。だから私は何かが彼らの側で壊れていると仮定することは安全だと思います。 –
** counter_seq **はあまりにも一般的な名前だ - 誤解されていない場合 - ユーザーが同じスキーマを共有しているので、人々はあなたのシーケンスを先に進めていると思う –