0
鑑於以下數據表定義在SQLite的版本:SQLite的:HOWTO插入外鍵3.7.5數值到一個對照表
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]));
我可以使用哪些SQL命令填充的BookID和是PersonID字段值BooksAuthorsXRef數據表使用Books表中特定Title的rowid的值與Persons表中的rowid關聯給定的LastName,FirstName和MiddleName值集合?
我已經用一條記錄填充了Books表;
INSERT INTO
Books
VALUES
('Stingray Shuffle', 2003);
而且,個人表已經填充了以下記錄:
INSERT INTO
People
(LastName, FirstName)
VALUES
('Dorsey', 'Tim')
我會SQLite中使用什麼SQL命令定義蒂姆·多爾西(人ROWID = 1)的作者書名爲「Stingray Shuffle」的書(書籍rowid = 1)?
此外,基於數據表的定義,任何變化需要作出增加,並在BooksAuthorsXRef數據表更易於管理,並同時保持一定程度的引用完整性的變化更容易書籍和參考資料記錄人不高興?
預先感謝您的時間,幫助和耐心。
謝謝你,威爾。我是否正確地跟蹤了您,我必須在名爲XRefTemp的數據庫中包含臨時或物理第三個數據表,其中包含現有圖書和人員數據表中的所有列,以便將新記錄插入到BooksAuthorsXRef中?而且,當我添加一本新書,並在需要時將Person記錄添加到每個相應的表中時,我還需要在XRefTemp表中插入交叉引用記錄,然後才能更新BooksAuthorsXRef? – ClockEndGooner 2011-05-22 11:30:58
有沒有辦法在不使用單獨的臨時或物理數據庫表的情況下將記錄插入到BooksAuthorsXRef中,假設我知道書的標題以及作者(Person)的姓氏和名字? – ClockEndGooner 2011-05-22 11:31:24
@ClockEndGooner - 是的,對於批量加載,理想情況下,您將擁有一張表格,因爲您所描述的任何內容都不允許您在Books/People表格中執行查找。如果您知道現有書籍記錄的標題以及某人的First + Middle + Last名稱,則只需使用上述第二個查詢。 – 2011-05-22 14:41:00