0

我有 2 个类别 A 和 B,包含以下列:

甲类

_id | name

B类

_id | tableA_id |name

物品清单

_id | name | tableB_id

tableA_id并且tableB_id是外键,_id 列是主键。

B 类是 A 的子类。

name列是唯一的(每个表中只有 1 个类别)

我想插入 5 个项目,每个项目都有 A 类和 B 类。

第 1 项:

name: item1
category A: Movie
Category B: Action

第 2 项:

name: item2
category A: Movie
Category B: Drama

第 3 项:

name: item3
category A: Movie
Category B: Comedy

第 4 项:

name: item4
category A: Music
Category B: Pop

第 5 项:

name: item5
category A: Music
Category B: Rock

如何在不查询其对应主节点的 id 的情况下填充外键?

还是我错过了数据库设计的重要部分?

4

3 回答 3

1

如何在不查询其对应主节点的 id 的情况下填充外键?

如果我正确理解了您的问题,则在将新记录插入表时无法填充外键List而不查询 Rock 的 id,即没有

select _id,  tableA_id
from Category_B
where name = 'Rock'
于 2012-08-23T12:45:07.750 回答
1

首先填充 CATEGORY_A 和 CATEGORY_B。

然后在知道 CATEGORY_B.ID 的情况下插入 ITEM_LIST。

于 2012-08-23T12:51:50.523 回答
1

如果您的数据库设计是“正确的”,为了防止损坏,您将无法插入没有父键的子记录。

为了获得父键,无需重新查询,请阅读这篇优秀的帖子:

http://www.mikesdotnetting.com/Article/54/Getting-the-identity-of-the-most-recently-added-record

于 2012-08-23T12:44:36.860 回答