SQL错误:接近“”threatAgent_id“”:语法错误

时间:2017-03-03 17:09:51

标签: sql sqlite

我正在尝试运行以下查询来创建表:

CREATE TABLE "attack" (
      "id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL ,
      "name" VARCHAR , 
      "description" TEXT check(typeof("description") = 'text') , 
      "probability" DOUBLE ,

      "asset_id" INTEGER  ,
      FOREIGN KEY ( "asset_id") REFERENCES  asset(id)   ,

      "threatAgent_id" INTEGER  ,
      FOREIGN KEY ( "threatAgent_id") REFERENCES  threatAgent(id) ,

      "vulnerability_id"  INTEGER  ,
      FOREIGN KEY ( "vulnerability_id") REFERENCES  vulnerability(id)

 ) ;

但它抱怨

 error: near ""threatAgent_id"": syntax error

我使用以下查询创建了threatAgent

CREATE TABLE "threatAgent" ("id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , "means" TEXT check(typeof("means") = 'text') , "motivation" VARCHAR, "capabilities" VARCHAR, "opportunities" VARCHAR)

那么,为什么抱怨?

1 个答案:

答案 0 :(得分:1)

它不喜欢使用约束定义隔行列定义。因此,当它达到第一个约束时,它认为不再有列。

将所有约束定义移至底部以解析。

CREATE TABLE "attack" (
      "id" INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL ,
      "name" VARCHAR , 
      "description" TEXT check(typeof("description") = 'text') , 
      "probability" DOUBLE ,
      "asset_id" INTEGER , 
      "threatAgent_id" INTEGER  ,
      "vulnerability_id"  INTEGER  ,

      FOREIGN KEY ( "asset_id") REFERENCES  asset(id)   ,
      FOREIGN KEY ( "threatAgent_id") REFERENCES  threatAgent(id) ,
      FOREIGN KEY ( "vulnerability_id") REFERENCES  vulnerability(id)

 ) ;