我正在尝试创建一个表,如下所示:
CREATE TABLE SCHEDULE (
SESSIONID SERIAL,
MODULECODE VARCHAR(10),
CONSTRAINT SCHEDULE_FOREIGN_KEY FOREIGN KEY (MODULECODE) REFERENCES MODULES (MODULECODE),
CONSTRAINT SCHEDULE_PRIMARY_KEY PRIMARY KEY (SESSIONID, MODULECODE));
想法是 SESSION ID
将随着每个新行自动递增,但仅限于 MODULECODE
,例如:
----------------------
|SESSIONID|MODULECODE|
|---------|----------|
| 1 | A |
| 2 | A |
| 3 | A |
| 1 | B |
| 2 | B |
| 1 | C |
| 2 | C |
|--------------------|
我相信这就是 AUTO_INCREMENT
在 MySQL 中的功能,但我怀疑 PostgreSQL 不会以这种方式工作。我还能如何在 PostgreSQL 中实现这一点?
最佳答案
按照@Juan 的建议显示数据
select
row_number() over (
partition by modulecode order by modulecode
) as sessionid,
modulecode
from schedule
然后当用户从某个模块请求某个 sessionid 时:
select *
from schedule
where sessionid = (
select sessionid
from (
select
sessionid,
row_number() over (order by sessionid) as module_sessionid
from schedule
where modulecode = 'B'
) s
where module_sessionid = 2
)
关于sql - PostgreSQL 复合主键和序列增量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34074502/