4
我想使用序列爲我的數據庫中的某些對象創建友好的ID。我的問題是,我不希望該序列是表的全局,而是我想增加基於外鍵的值。在PostgreSQL中增加一個基於外鍵的序列
例如,我的表被定義爲:
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
而不是(cur租金行爲):
id | friendly_id | bar_id
-----------+------------------+-----------------
123 | 1 | 345
124 | 2 | 345
125 | 3 | 346
126 | 4 | 345
這是可能的使用序列或有沒有更好的方法來實現呢?
你可以嘗試使用可更新'VIEW'此表有'ROW_NUMBER ()OVER(PARTITION BY bar_id ORDER BY id)as friendly_id' – 2013-02-21 21:42:12