2017-03-03 182 views
0

我試圖運行下面的查詢,使表:SQL錯誤:「」附近threatAgent_id「」:語法錯誤

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

它不喜歡使用約束定義交錯列定義。所以當它到達第一個約束時,它認爲不會有更多的列。

將所有約束定義移動到底部進行解析。

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) 

) ;