我已经成功地创建了一个表:
CREATE TABLE "countermeasure"
(
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" VARCHAR,
"description" TEXT check(typeof("description") = 'text'),
"probability" DOUBLE,
"cost" DOUBLE
)
现在我需要使用以下方式添加一个外键:
ALTER TABLE "countermeasure"
(ADD "attack_id" INTEGER,
FOREIGN KEY ( "attack_id") REFERENCES attack(id)
)
,但它抱怨错误:
sqlitemanager:可能的SQL语法错误:Alter表"对策"(
添加" Attack_id"整数,
外键(" Attact_id")参考攻击(ID))[靠近"(":语法错误))
异常名称:ns_error_failure
我确定我已经很好地创建了attack
表。
使用以下语法:
ALTER TABLE table1
ADD FOREIGN KEY (P_Id)
REFERENCES table2(P_Id)
所建议的,围绕添加的括号不应在那里。这是外国键通常用于的规范
ALTER TABLE table1 ADD COLUMN FOREIGNID INT NOT NULL, ADD FOREIGN KEY
(FOREIGNID) REFERENCES table2(ID)
Change(,)的约束
ALTER TABLE countermeasure
ADD attack_id INTEGER CONSTRAINT fk FOREIGN KEY (attack_id) REFERENCES attack(id)
或只是
ALTER TABLE countermeasure
ADD attack_id INTEGER FOREIGN KEY REFERENCES attack(id)