[英]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.