SQL:ALTER TABLE Add不起作用

时间:2017-03-03 18:17:20

标签: sql sqlite

我使用以下方法成功创建了一个表:

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表。

3 个答案:

答案 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)