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);
Können Sie die gesagten .sq-Dateien posten? Es ist schwer zu helfen, ohne mehr Code zu sehen. – parkgrrr
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. –
Es ist vorbei, vorbei. –