事前にすべての情報がないテーブルにデータを効率的に挿入する方法に頭を悩ませようとしています。
2つのテーブルがTable1
ありTable2
ます。Table2
の主キーは自動インクリメントintです。このintは行のIDとして機能し、の列にもありますTable1
(一意ではないため、の複数のレコードがTable1
同じになる可能性があります)。問題は、関連する値を自動的Table2.ID
に入力する新しいレコードを挿入する方法です。?Table1
Table2.ID
私の論理は次のとおりです。
Table2
レコードが存在するかどうかを検索します。- 存在する場合は、ID値を返し、そのID値を使用してTable1に新しいレコードを挿入します
- 存在しない場合は、Table2に新しいレコードを挿入し、IDを返します
- 関連するTable1列に新しいIDを挿入します
コードでそれを行うのではなく、SQLiteに関連するIDの挿入を自動化させることは可能ですか(読んで、トリガーに出くわしましたが、それらの使用方法やここで役立つかどうかはわかりません)?
例を使用して質問を更新しました(私が取り組んでいる実際のゲームの側面について説明することは許可されていませんが、この構成された例は同様の性質のものです)
テーブル2が呼び出されGenre
、テーブル1が呼び出されFilm
、すべてのテーブルが空になります。ジャンルPK(auto int)は、テーブルのジャンル列(int)にリンクされFilm
ます。Film
テーブルには、ジャンルのテキストバージョンを格納する列はなく、varchar
int列のみがあります。
Film
新しいレコードを挿入Horror
し、ジャンルとして渡します。ただし、現時点でHorror
はテーブルにレコードがないGenre
ため、テーブルのジャンル列に挿入できるint値はありませんFilm
。
したがって、私の見解では(SQLに精通していないため非効率的かもしれません)、最初にHorror
ジャンルをGenre
テーブルに挿入し、何らかの方法で新しく作成されたIDを取得してから、そのIDを新しく作成されたgenre
列に挿入する必要があります。Film
レコードを作成しました。2つ目のフィルムを追加するHorror
と、IDはすでにGenre
テーブルに存在するため、SQLiteはそのIDを取得して、新しいFilm
レコードに配置する必要があります。それは可能ですか?