2017-04-04 5 views
0

Ich habe ein Android-Projekt, das eine lokale Datenbank in SQLite geschrieben enthält. Es gibt einen sqldelight-Ordner, der eine .sq-Datei für jede Tabelle in der Datenbank enthält (User.sq, Routine.sq ...). Ich kann auf die hier definierten Tabellen und Prozeduren in meinem Projekt zugreifen.SQLite Fremdschlüssel | Verschiedene SQ-Dateien

Jetzt beabsichtige ich, der Datenbank Fremdschlüsselbeziehungen hinzuzufügen. Wenn ich jedoch etwas wie FOREIGN KEY (this_table_fk) REFERENCES OtherTable(other_table_pk) versuche, wird das Projekt nicht erstellt, da die .sq-Datei, in der ich bin, die OtherTable Tabelle nicht finden kann, die aus der CREATE TABLE-Anweisung in OtherTable.sq oder durch ihre Spalte other_table_pk erstellt wird.

Wie kann ich zulassen, dass die 2 verschiedenen .sq-Dateien die Tabellen sehen, die von den anderen generiert wurden?

Ich habe versucht, die TABLE-Anweisungen von ThisTable und OtherTable in der gleichen .sq Datei CREATE setzen, aber ich bekomme mismatched input 'CREATE' expecting (<EOF>, IDENTIFIER, JAVADOC_COMMENT) auf der zweiten Anweisung CREATE TABLE. Ich hätte lieber eine Lösung, die jede Tabelle in ihrer eigenen .sq-Datei hält.

Danke.

Grund Vorführung von ThisTable.sq und OtherTable.sq

ThisTable.sq:

CREATE TABLE ThisTable (
     this_table_pk INTEGER PRIMARY KEY AUTOINCREMENT, 
     name TEXT, 
     location TEXT, 
     start_date TEXT, 
     end_date TEXT, 
     this_column_fk INTEGER, 
     FOREIGN KEY (this_column_fk) REFERENCES OtherTable(other_column_pk) 

);

OtherTable.sq:

CREATE TABLE OtherTable (
     other_table_pk INTEGER PRIMARY KEY AUTOINCREMENT, 
     name TEXT, 
     location TEXT, 
     start_date TEXT, 
     end_date TEXT); 
+0

Können Sie die gesagten .sq-Dateien posten? Es ist schwer zu helfen, ohne mehr Code zu sehen. – parkgrrr

+0

Ja, ich werde das OP bearbeiten. Ich versuche nicht, mit dem, was ich mache, Geld zu verdienen oder irgendetwas, aber ich tendiere dazu, es als guten Grundsatz zu betrachten, spezifische Implementierungen zu abstrahieren. Eine Minute. –

+0

Es ist vorbei, vorbei. –

Antwort

0

Das Problem war, aufgrund eines Missbrauchs des Android Studio-Plattform. Parkgrrr vermutete jedoch, dass es auf einer Reihenfolge der Tabellenerstellung beruhte, die mich zur richtigen Antwort führte.

Verwandte Themen