gpt4 book ai didi

sqlite - 关系表中的自动增量子项目

转载 作者:行者123 更新时间:2023-12-03 18:35:09 25 4
gpt4 key购买 nike

我有两个表(在计划阶段,我完全愿意更改这些表):

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


对于与建筑物具有“子”关系的rooms表,是否对每座建筑物都有一种方法,我为这些房间重新启动自动增量编号?例如,我想要以下内容:

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)
);


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

请注意,在您的情况下,这似乎是更正确的行为:您希望房间号与门标上写的数字相同,而不是数据库分配的一些随机值,因此您需要显式插入正确的房间号。

关于sqlite - 关系表中的自动增量子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29146532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com