SQL错误:“”附近threatAgent_id“”:语法错误
问题描述:
我试图运行下面的查询,使表: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)
所以,为什么抱怨?
答
它不喜欢使用约束定义交错列定义。所以当它到达第一个约束时,它认为不会有更多的列。
将所有约束定义移动到底部进行解析。
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)
) ;