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