我有一个Android项目,其中包含用SQLite编写的本地数据库。存在一个sqldelight文件夹,其中包含数据库中每个表的.sq文件(User.sq,Routine.sq ...)。我能够访问/使用我的项目中定义的表和过程。
现在,我打算将外键关系添加到数据库中。但是,如果我尝试FOREIGN KEY (this_table_fk) REFERENCES OtherTable(other_table_pk)
之类的东西,项目将无法构建,因为我所在的.sq文件无法找到从OtherTable中的OtherTable
语句创建的CREATE TABLE
表.sq或扩展名为other_table_pk
的列。
如何允许2个不同的.sq文件“看到”另一个生成的表?
我尝试将ThisTable
和OtherTable
的CREATE TABLE语句放在同一个.sq文件中,但我在第二个CREATE TABLE语句中得到mismatched input 'CREATE' expecting (<EOF>, IDENTIFIER, JAVADOC_COMMENT)
。我宁愿有一个解决方案,将每个表保存在自己的.sq文件中。
感谢。
ThisTable.sq
和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 :(得分:0)
问题是由于滥用Android Studio平台造成的。然而,parkgrrr推测它是基于表创建的顺序,这使我得到了正确的答案。