値:SQLiteの:ハウツー挿入外部キーは、SQLiteのバージョン3.7.5で次のデータ・テーブル定義を考えるとクロスリファレンステーブルに
私はBookIDとPERSONIDフィールド値を移入するために使用することができますどのようなSQLコマンドCREATE TABLE [Books] (
[Title] VARCHAR(125) NOT NULL,
[YearPublished] INT,
CONSTRAINT [CK_YearPublished] CHECK(YearPublished >= 1400));
CREATE TABLE [People] (
[FirstName] VARCHAR(25) NOT NULL,
[LastName] VARCHAR(45) NOT NULL,
[MiddleName] VARCHAR(25),
CONSTRAINT [UQ_PersonName] UNIQUE([FirstName], [LastName], [MiddleName]));
CREATE TABLE [BooksAuthorsXRef] (
[BookID] INT NOT NULL CONSTRAINT [FK_BookID] REFERENCES [Books]([rowid]),
[PersonID] INT NOT NULL CONSTRAINT [FK_PersonID] REFERENCES [People]([rowid]));
指定されたLastName、FirstName、MiddleNameの値セットについて、Booksテーブルの特定のTitleのROWIDの値をPersonsテーブルのROWIDに関連付けるBooksAuthorsXRefデータテーブル
書籍テーブルにはすでに1つのレコードが設定されています。
INSERT INTO
Books
VALUES
('Stingray Shuffle', 2003);
そして、人のテーブルには、以下のレコードが読み込まれました:私はSQLiteのに使用するどのようなSQLコマンド
INSERT INTO
People
(LastName, FirstName)
VALUES
('Dorsey', 'Tim')
を定義することティム・ドーシー(人ROWID = 1)の著者であります本の表(書籍rowid = 1)の "Stingray Shuffle"というタイトルの本?
また、BooksAuthorsXRefデータテーブルのBooks and Persons相互参照レコードの追加および変更を、ある程度の参照整合性を維持しながら、より管理しやすく、簡単にするために必要な変更はありますか?
ご協力いただきありがとうございました。
は、ウィル、ありがとうございました。 BooksAuthorsXRefに新しいレコードを挿入するために、既存のBooksおよびPersonsデータテーブルのすべての列を含むXRefTempという名前のデータベースに、一時的または物理的な3番目のデータテーブルが必要であることを正しく守っていますか?そして、BooksAuthorsXRefを更新するには、XRefTempテーブルに相互参照レコードを挿入する必要があります。 – ClockEndGooner
Bookのタイトルと著者(Person)のLastNameとFirstNameを知っていると仮定して、別の一時的または物理的なデータベーステーブルを使用せずにBooksAuthorsXRefにレコードを挿入する方法はありますか? – ClockEndGooner
@ClockEndGooner - はい、一括読み込みの場合、理想的には説明したようにテーブルがあります。それ以外のものはBooks/Peopleテーブルへの参照を実行できません。既存のBooksレコードのタイトルとPersonのFirst + Middle + Lastの名前が分かっている場合は、上記の2番目のクエリを使用するだけです。 –