给出这种格式的表格:
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")
)
答案 0 :(得分:3)
当然,请使用row_number
:
select primary, secondary,
row_number() over (partition by secondary order by primary) seq
from yourtable