基于外键递增的列

时间:2016-08-09 15:40:38

标签: sql oracle11g

给出这种格式的表格:

Primary | Foreign
1       | 1
2       | 1
3       | 1
4       | 2
5       | 2
6       | 3
7       | 4

是否可以描述一个充当"命令的列?或"序列"外键的每个实例的列?表现得像这样的东西:

Primary | Foreign | Seq
1       | 1         | 1
2       | 1         | 2
3       | 1         | 3
4       | 2         | 1
5       | 2         | 2
6       | 3         | 1
7       | 4         | 1

具体来说,我希望将该表定义为在此列中具有离散值,但能够更改它们。我可以从应用程序管理此行为,但想知道是否可以在db端管理默认值。所以,我会寻找一些可以使它发挥作用的魔法:

CREATE TABLE "MY_TABLE" 
        ( 
          "PRIMARY" NUMBER NOT NULL,
          "FOREIGN" NUMBER NOT NULL,
          "SEQUENCE" NUMBER DEFAULT SOME_MAGIC(SECONDARY, PRIMARY),
          CONSTRAINT MY_TABLE_PK PRIMARY KEY ("PRIMARY"),
          CONSTRAINT MY_TABLE_FK FOREIGN KEY ("FOREIGN")
          REFERENCES "SOME_OTHER_TABLE"  ("PRIMARY")
        )  

1 个答案:

答案 0 :(得分:3)

当然,请使用row_number

select primary, secondary,
       row_number() over (partition by secondary order by primary) seq
from yourtable
相关问题