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