2012-12-09 12 views
6

デバッガで次のような出力が表示されています。私はどの構文が欠落しているか分かりません。CREATE TABLEのFOREIGN KEYで構文エラーが発生しました

SQLコードは次のとおりです。

CREATE TABLE weeks(Week_Id INTEGER PRIMARY KEY, 
    Day TEXT, 
    Start_Time Text, 
    End_Time Text, 
    Break_Time Text); 
CREATE TABLE projects(Project_Id INTEGER PRIMARY KEY, 
    Name TEXT, 
    Description Text, 
    Client_Name Text, 
    Location Text); 
CREATE TABLE timesheets(Timesheet_Id INTEGER PRIMARY KEY, 
    Project_Id INTEGER, 
    FOREIGN KEY (Project_Id) REFERENCES projects (Project_Id), 
    Week_Id INTEGER, 
    FOREIGN KEY (Week_Id) REFERENCES weeks (Week_Id)); 

エラーがに沸く:

12-09 12:34:20.782: E/SQLiteLog(6490): (1) near "Week_Id": syntax error 
+0

誰でも?助けてください。ありがとう – Coder

+0

あなたのFOREIGN KEY宣言は変数宣言の後にあるべきであるかもしれません。それはショットの価値がある... – PearsonArtPhoto

+0

あなたはもっと詳しく教えてください。私はあなたが意味することを得ていない。 – Coder

答えて

15

あなたの変数が作成された後に、あなたのFOREIGN KEYリストを移動してみてください。

CREATE TABLE timesheets(Timesheet_Id INTEGER PRIMARY KEY, 
    Project_Id INTEGER, 
    Week_Id INTEGER, 
    FOREIGN KEY (Project_Id) REFERENCES projects (Project_Id), 
    FOREIGN KEY (Week_Id) REFERENCES weeks (Week_Id)); 
+0

ありがとうございました。これにはどんな理由がありますか? – Coder

+0

私はエキスパートではありませんが、FOREIGN KEYはCREATE TABLE文字列で最後に処理されると考えられます。うまくいきました:-) – PearsonArtPhoto

+0

感謝..私のために働いた – Pranita

2

SQLiteの構文(http://www.sqlite.org/lang_createtable.html)によると、あなたはまた、このような何かを書くことができます:

CREATE TABLE timesheets(Timesheet_Id INTEGER PRIMARY KEY, 
Project_Id INTEGER REFERENCES projects (Project_Id), 
Week_Id INTEGER REFERENCES weeks (Week_Id)); 

これは宣言と外部キーをマージします。

関連する問題