我使用以下方法成功创建了一个表:
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 TABLE“对策”(
添加“attack_id”INTEGER,
FOREIGN KEY(“attack_id”)REFERENCES attack(id))[near“(”:syntax error]
例外名称:NS_ERROR_FAILURE
我确信我已经很好地创建了attack
表。
答案 0 :(得分:0)
正如所建议的那样,附加的括号不应该存在。这是通常用于外键的标准
ALTER TABLE table1 ADD COLUMN FOREIGNID INT NOT NULL, ADD FOREIGN KEY
(FOREIGNID) REFERENCES table2(ID)
答案 1 :(得分:0)
使用以下语法:
ALTER TABLE table1
ADD FOREIGN KEY (P_Id)
REFERENCES table2(P_Id)
答案 2 :(得分:0)
改变(,)CONSTRAINT
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)