繁体   English   中英

在此SQLite语句中找不到语法错误

[英]Can't find the syntax error in this SQLite statement

我正在编写一个Android应用程序,并且需要一个数据库。 我将有3张桌子,但现在只能进行一张桌子。 我在控制台中进行调试,以稍后在我的Javacode中实现它们。 以下语句成功完成:

sqlite3 progressapp.db

CREATE TABLE Z_Type(_Z_T_ID INTEGER PRIMARY KEY NOT NULL, 
Description TEXT NOT NULL, Unit TEXT NOT NULL);

但是现在我想在另一个表中引用T_Type的PK:

CREATE TABLE goals (_Z_id INTEGER PRIMARY KEY NOT NULL, Title TEXT NOT NULL,
Type INTEGER NOT NULL, FOREIGN KEY(Type) REFERENCES Z_Type(_Z_T_ID),
Timeframe TEXT, Goaldate INTEGER);

Type INTEGER NOT NULL, FOREIGN KEY(Type) REFERENCES Z_Type(_Z_T_ID)在Android中是否为有效的SQLite语句? 它说“错误:靠近“时间范围”:语法错误”,但由于我猜缺少SQL Experience,因此我根本找不到它。

是否有更好的方法来引用FK?

尝试这个:

CREATE TABLE goals (_Z_id INTEGER PRIMARY KEY NOT NULL, Title TEXT NOT NULL, Type INTEGER NOT NULL,Timeframe TEXT, Goaldate INTEGER, FOREIGN KEY(Type) REFERENCES Z_Type(_Z_T_ID));

我认为顺序很重要。 有关更多文档,您可以访问sqlite.org/foreignkeys.html

您可以将引用定义为列定义的一部分

CREATE TABLE goals (_Z_id INTEGER PRIMARY KEY NOT NULL, Title TEXT NOT NULL,
Type INTEGER NOT NULL REFERENCES Z_Type(_Z_T_ID),
Timeframe TEXT, Goaldate INTEGER);

sqlite CREATE TABLE语句中,列定义排在第一位,表约束排在其后。

FOREIGN KEY(Type) REFERENCES Z_Type(_Z_T_ID)是一个表约束,应在末尾使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM