1

夕方のすべて

私は小さなアプリケーションに取り組んできましたが、SQLite の外部キー制約に行き詰まりました。基本的に私が持っているのは、1つの「HostLookuptable」です

CREATE TABLE tblHostLookup ( 
HostID INTEGER PRIMARY KEY AUTOINCREMENT, 
HostName TEXT);

そして、1つの「ScanLookuptable」として

CREATE TABLE tblScanLookup ( 
ScanID INTEGER PRIMARY KEY AUTOINCREMENT, 
ScanDate TEXT);

次に、「ScanHistorytable」として 2 つのテーブル間のマッピングを持つ別のテーブルがあります。

CREATE TABLE tblScanHistory (
ScanHistoryID INTEGER PRIMARY KEY AUTOINCREMENT,
HostID INTEGER,
FOREIGN KEY(HostID) REFERENCES tblHostLookup(HostID),
ScanID INTEGER,
FOREIGN KEY(ScanID) REFERENCES tblScanLookup(ScanID));

しかし、私はエラーが発生し続けます

Syntax error near ScanID

なんでそうなの?テーブルに複数の外部キーを持つことは許可されていませんか? この点でどんな助けも素晴らしいでしょう。

ありがとう

4

1 に答える 1

2

テーブルの列とテーブルの制約を混在させることはできません。制約は、すべての列の後にリストする必要があります。

CREATE TABLE tblScanHistory (
    ScanHistoryID INTEGER PRIMARY KEY AUTOINCREMENT,
    HostID INTEGER,
    ScanID INTEGER,
    FOREIGN KEY(HostID) REFERENCES tblHostLookup(HostID),
    FOREIGN KEY(ScanID) REFERENCES tblScanLookup(ScanID)
);

または、より簡単に:

CREATE TABLE tblScanHistory (
    ScanHistoryID INTEGER PRIMARY KEY AUTOINCREMENT,
    HostID INTEGER REFERENCES tblHostLookup(HostID),
    ScanID INTEGER REFERENCES tblScanLookup(ScanID)
);
于 2013-07-23T18:55:31.127 に答える