Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

syntax error with FOREIGN KEY in CREATE TABLE

I am getting following output on debugger. I am not sure what syntax is missing.

The SQL code is:

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

The error boils down to:

12-09 12:34:20.782: E/SQLiteLog(6490): (1) near "Week_Id": syntax error
like image 285
Coder Avatar asked Dec 09 '12 12:12

Coder


2 Answers

Try moving your FOREIGN KEY lists to after your variables are created.

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)); 
like image 187
PearsonArtPhoto Avatar answered Oct 02 '22 07:10

PearsonArtPhoto


According to the SQLite syntax (http://www.sqlite.org/lang_createtable.html) you can also write something like this:

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

This merges declarations and foreign keys.

like image 40
Sebastian Avatar answered Oct 02 '22 08:10

Sebastian