代码之家  ›  专栏  ›  技术社区  ›  George Krastev

SQLite查询未按特定顺序执行

  •  2
  • George Krastev  · 技术社区  · 7 年前

    我一直试图在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))
    

    我不知道我的第四个问题出了什么问题,所以如果有任何帮助,我将不胜感激, 谢谢 :))

    1 回复  |  直到 7 年前
        1
  •  0
  •   laalto    7 年前

    表约束,例如 FOREIGN KEY(...) REFERENCES ... 列定义之后。您正在混合列def personD_Key INTEGER 两人之间 FOREIGN KEY 表约束。

    enter image description here

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