【问题标题】:SQLite queries not executing in a particular orderSQLite 查询未按特定顺序执行
【发布时间】:2018-03-06 14:12:40
【问题描述】:

我一直在尝试在 Android 上一个接一个地执行几个 SQLite 查询,但我得到一个奇怪的错误。在将它粘贴到 SQL 验证器后,我设法做出了假设损坏的查询,但是我成功执行的查询之一非常相似。所以这里是我执行它们的顺序查询:

   1.
   CREATE TABLE companyD (companyD_ID INTEGER PRIMARY KEY AUTOINCREMENT, 
   name TEXT)

   2.
   CREATE TABLE personD (personD_ID INTEGER PRIMARY KEY AUTOINCREMENT, 
   name TEXT, 
   age INTEGER, 
   companyD_Key INTEGER, 
   FOREIGN KEY(companyD_Key) REFERENCES companyD(companyD_ID))

   3.
   CREATE TABLE vehicleD (vehicleD_ID INTEGER PRIMARY KEY AUTOINCREMENT, 
   make TEXT, 
   model TEXT, 
   personD_Key INTEGER, 
   FOREIGN KEY(personD_Key) REFERENCES personD(personD_ID))

   4.
   CREATE TABLE addressD (addressD_ID INTEGER PRIMARY KEY AUTOINCREMENT, 
   buildingName TEXT, 
   address_1 TEXT, 
   address_2 TEXT, 
   address_3 TEXT, 
   postcode TEXT, 
   county TEXT, 
   country TEXT, 
   companyD_Key INTEGER, 
   FOREIGN KEY(companyD_Key) REFERENCES companyD(companyD_ID), 
   personD_Key INTEGER, FOREIGN KEY(personD_Key) REFERENCES personD(personD_ID))

以下是错误信息:

android.database.sqlite.SQLiteException: near "personD_Key": syntax error (code 1): , while compiling: CREATE TABLE addressD (addressD_ID INTEGER PRIMARY KEY AUTOINCREMENT, buildingName TEXT, address_1 TEXT, address_2 TEXT, address_3 TEXT, postcode TEXT, county TEXT, country TEXT, companyD_Key INTEGER, FOREIGN KEY(companyD_Key) REFERENCES companyD(companyD_ID), personD_Key INTEGER, FOREIGN KEY(personD_Key) REFERENCES personD(personD_ID))

我无法理解我的第四个查询出了什么问题,因此我们将不胜感激, 谢谢, :))

【问题讨论】:

  • 所以将它们包装在 begin...end 中为每个表创建脚本 :)

标签: android sql database sqlite android-sqlite


【解决方案1】:

FOREIGN KEY(...) REFERENCES ... 等表约束位于列定义之后。您正在两个 FOREIGN KEY 表约束之间混合列 def personD_Key INTEGER

http://www.sqlite.org/lang_createtable.html

【讨论】:

    猜你喜欢
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多