我试图围绕如何有效地将数据插入到事先没有所有信息的表中。
我有两张桌子,Table1
和Table2
。Table2
的主键是一个自动递增的 int。此 int 用作行的 ID,并且也在列中Table1
(不是唯一的,因此中的多条记录Table1
可以具有相同的Table2.ID
)。问题是,我如何插入一条新记录Table1
以自动填充相关Table2.ID
值?
我的逻辑是:
- 搜索
Table2
以查看记录是否存在。 - 如果存在,则返回 ID 值并在 Table1 中插入具有该 ID 值的新记录
- 如果不存在,则在Table2中插入新记录并返回ID
- 将新 ID 插入相关的 Table1 列
是否可以让 SQLite 自动插入相关 ID,而不是我必须在代码中执行此操作(四处阅读,我遇到过触发器,但不确定如何使用它们或者它们是否在这里有用)?
用示例更新问题(我不允许讨论我正在开发的实际游戏的各个方面,但这个虚构的示例具有相似的性质)
表 2 将被调用Genre
,表 1 将被调用Film
并且所有表都是空的。Genre PK (auto int) 将链接到Film
表中的 Genre 列 (int)。该Film
表没有varchar
存储流派文本版本的列,只有 int 列。
我插入一条新记录并作为流派Film
传入。Horror
但是,此时表中没有Horror
记录Genre
,所以没有可以插入Film
表的genre列的int值。
因此,从我的角度来看(可能效率不高,因为我不熟悉SQL),我需要先将Horror
流派插入Genre
表中,以某种方式获取新创建的ID,然后将该ID插入到genre
新的列中创Film
纪录。当我添加第二部Horror
电影时,该 ID 已存在于Genre
表中,因此 SQLite 应获取该 ID 并将其放入新Film
记录中。那可能吗?