我正在尝试运行以下查询来创建表:
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)
那么,为什么抱怨?
答案 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)
) ;