关系 table 中的自动递增子项

Autoincrement sub-item in relational table

我有两个 table(非常愿意更改这些 table,因为我正处于计划阶段):

create table building (
    buildingId integer primary key autoincrement,
    buildingName text
);

create table rooms (
    roomId integer primary key autoincrement,
    buildingId integer,
    FOREIGN KEY(buildingId) REFERENCES building(buildingId)
);

一些当前样本数据:

building table:   
buildingId - buildingName
1          - "house1"
2          - "house2"

rooms table:   
roomId     - buildingId
1          - 1
2          - 1
3          - 1
4          - 2
5          - 2

房间table,与建筑物有"child"关系,有没有办法为每个建筑物重新启动房间的自动增量#?例如,我想要的是以下内容:

rooms table:   
roomId     - buildingId
1          - 1
2          - 1
3          - 1
1 (changed)- 2
2 (changed)- 2

虽然自动增量为所有建筑物中的每个房间添加了一个唯一的 ID,但在第一个示例数据中看到一个建筑物可能有房间 4 和 5,但没有 1 到 3,这似乎很奇怪。

可以使 roomId 列不唯一,这样主键现在由两列组成:

create table rooms (
    roomId integer,
    buildingId integer,
    PRIMARY KEY(roomId, buildingId),
    FOREIGN KEY(buildingId) REFERENCES building(buildingId)
);

但是,SQLite 无法自动分配数字,除非您只有一个 PK 列。

请注意,在您的情况下这似乎是更正确的行为:您希望房间号与写在门牌上的号码相同,而不是数据库分配的某个随机值,因此您需要无论如何都要明确插入正确的房间号。