我试图围绕如何有效地将数据插入到事先没有所有信息的表中。
我有两张桌子,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记录中。那可能吗?