CREATE TABLE中FOREIGN KEY的语法错误

时间:2012-12-09 12:41:02

标签: android sql android-sqlite

我在调试器上得到以下输出。我不确定缺少什么语法。

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

2 个答案:

答案 0 :(得分:17)

尝试在创建变量后移动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)); 

答案 1 :(得分:4)

根据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));

这会合并声明和外键。