我使用的是SQlite,PK列似乎是自动递增的。我有点担心我想要规范化type
- 列的方法:
Table: Book
id type name
... ... ...
15 1 Foo
16 2 Bar
... ... ...
Table: Type
id typename
1 magazine
2 novel
如果我重新创建Type
- 表并且PK-index(=“id”)更改,例如,会发生什么? 1
现在指的是novel
而不是magazine
。所以为了更健壮,我正在考虑插入一个自定义的第二列,其中包含我所引用的“逻辑”索引:
Table: Book
id type name
1 3 Foo
2 4 Bar
Table: Type
id type typename
1 3 magazine
2 4 novel
这样我的自定义类型ID将独立于主键。我认为最后一种方法的另一个优点是我不必重新询问新行的最新(新)id
,因为我会参考之前知道的type
列。这样当我插入行时我已经知道“type”id来进行引用(我正在使用数据库的线程,所以在方法中读取数据库中的值很难或不可能(?) - 所以如果我愿意的话需要id,我首先要问db。
这是一种合法的做法吗?或者我应该直接使用我自己管理的“自定义ID”创建一个非递增主键?
答案 0 :(得分:0)
如documentation所示,您只需在PK列中插入所需的值:
INSERT INTO Type(id, typename) VALUES(2, 'novel')
如果您从不需要自动增量值,则不应首先使用自动增量色谱柱。