SQLite外键|不同的SQ文件

时间:2017-04-04 04:41:46

标签: android database sqlite sqldelight

我有一个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文件“看到”另一个生成的表?

我尝试将ThisTableOtherTable的CREATE TABLE语句放在同一个.sq文件中,但我在第二个CREATE TABLE语句中得到mismatched input 'CREATE' expecting (<EOF>, IDENTIFIER, JAVADOC_COMMENT)。我宁愿有一个解决方案,将每个表保存在自己的.sq文件中。

感谢。

ThisTable.sqOtherTable.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);

1 个答案:

答案 0 :(得分:0)

问题是由于滥用Android Studio平台造成的。然而,parkgrrr推测它是基于表创建的顺序,这使我得到了正确的答案。