シーケンスを使用して、データベース内の一部のオブジェクトにわかりやすい ID を作成したいと考えています。私の問題は、シーケンスをテーブルに対してグローバルにしたくないということです。代わりに、外部キーに基づいて値を増やしたいのです。
たとえば、私のテーブルは次のように定義されています。
CREATE TABLE foo (id numeric PRIMARY KEY, friendly_id SERIAL, bar_id numeric NOT NULL)
そして、次のようなステートメントfriendly_id
ごとに個別にインクリメントしたいと思います。bar_id
INSERT INTO foo (123, DEFAULT, 345)
INSERT INTO foo (124, DEFAULT, 345)
INSERT INTO foo (125, DEFAULT, 346)
INSERT INTO foo (126, DEFAULT, 345)
(望ましい動作):
id | friendly_id | bar_id
-----------+------------------+-----------------
123 | 1 | 345
124 | 2 | 345
125 | 1 | 346
126 | 3 | 345
(現在の動作)の代わりに:
id | friendly_id | bar_id
-----------+------------------+-----------------
123 | 1 | 345
124 | 2 | 345
125 | 3 | 346
126 | 4 | 345
これはシーケンスを使用して可能ですか、それともこれを達成するためのより良い方法はありますか?