2012-12-09 16 views
6

Ich bekomme folgende Ausgabe auf Debugger. Ich bin mir nicht sicher, welche Syntax fehlt.Syntaxfehler mit FOREIGN KEY in CREATE TABLE

Der SQL-Code ist:

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

Der Fehler läuft darauf hinaus:

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

Jeder? Hilfe bitte. Danke – Coder

+0

Es könnte möglich sein, dass Ihre FOREIGN KEY-Deklarationen nach Ihren Variablendeklarationen sein sollten. Es ist einen Versuch wert ... – PearsonArtPhoto

+0

Können Sie bitte mehr ausarbeiten. Ich verstehe nicht, was du meinst. – Coder

Antwort

15

Versuchen Sie FOREIGN KEY Listen zu bewegen, nachdem die Variablen erstellt werden.

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

Danke das hat funktioniert. Ein besonderer Grund dafür? – Coder

+0

Ich bin kein Experte, aber ich denke, dass FOREIGN KEYS die letzte Sache in einer CREATE TABLE-Zeichenfolge verarbeitet werden soll. Froh, dass es funktioniert hat :-) – PearsonArtPhoto

+0

danke..es hat auch für mich funktioniert – Pranita

2

Nach der SQLite Syntax (http://www.sqlite.org/lang_createtable.html) können Sie auch so etwas schreiben:

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

Diese verschmilzt Erklärungen und Fremdschlüssel.

Verwandte Themen