SQLite FOREIGN KEY约束

时间:2013-12-30 07:22:38

标签: android sql sqlite

在我的 android 项目的 SqLite 数据库中,我必须创建一个外键,这是主键桌子。我使用 SQLiteManager 编写了如下sql语句。

 CREATE TABLE OBTTourVehicleUpdate
(
TourHeaderCode INT PRIMARY KEY     NOT NULL,
TourVehicleProcessCode INT    NOT NULL,
VehicleCode CHAR(10),
TourStart TEXT ,
TourEnd TEXT ,
LastMilage DOUBLE,
NewMilage DOUBLE,
CONSTRAINT  FOREIGN KEY (TourHeaderCode) REFERENCES OBTTourHeader(TourHeaderCode)

);

它给出了一条错误消息,说明

  

内部错误。靠近FOREIGN:语法错误。

两个表的表结构如下所示。 enter image description here  我怎样才能解决这个问题。

3 个答案:

答案 0 :(得分:3)

从代码中删除CONSTRAINT。只需做

FOREIGN KEY (TourHeaderCode) REFERENCES OBTTourHeader(TourHeaderCode).

请务必致电onCreate()onUpdate()上的表格,并更新DB_version。为了安全起见,不要将你的FK宣布为PK。

答案 1 :(得分:1)

您收到该错误,因为您的语法确实不正确。

阅读official SQLite documentation以了解有关如何使用它的更多信息。

CREATE TABLE OBTTourVehicleUpdate
(
TourHeaderCode INT PRIMARY KEY     NOT NULL,
TourVehicleProcessCode INT    NOT NULL,
VehicleCode CHAR(10),
TourStart TEXT ,
TourEnd TEXT ,
LastMilage DOUBLE,
NewMilage DOUBLE,
FOREIGN KEY(TourHeaderCode) REFERENCES OBTTourHeader(TourHeaderCode)
);

这样的事情应该有用。

答案 2 :(得分:1)

CREATE TABLE OBTTourVehicleUpdate
(
TourHeaderCode INT PRIMARY KEY     NOT NULL,
TourVehicleProcessCode INT    NOT NULL,
VehicleCode CHAR(10),
TourStart TEXT ,
TourEnd TEXT ,
LastMilage DOUBLE,
NewMilage DOUBLE,
FOREIGN KEY(TourHeaderCode) REFERENCES OBTTourHeader(TourHeaderCode)
);

您不需要在查询中使用CONSTRAINT。请按照有关Foreign Key Constraints

的文章进行操作