当我尝试在 dbeaver 中运行此代码时,它给了我此错误" [SQLITE_ERROR] SQL 错误或缺少数据库(接近"fk_GRADES_ID":语法错误)"



CREATE TABLE School (Id integer主键,Name TEXT NOT NULL

);创建表事件Id integer主键,TEXT NOT NULL,start_data文本不为空,end_data文本不为空,标题文本不空,外键fk_events_ID REFERENCES学校(ID)

);

CREATE TABLE CALENDARID的整数主键,标题文本不空,TEXT NOT NULL,start_data文本不为空,end_data文本不为空,主题整数不空,外键fk_CALENDAR_ID REFERENCES学校(ID)

);

CREATE TABLE GRADESId integer主键,标题文本不是零,系数REAL NOT NULL,值REAL NOT NULL,date_time TEXT不为空,主题整数不空,外键fk_GRADES_ID REFERENCES学校(ID)

在外键语法中,必须命名表中作为外键的列。您还需要首先定义一个列,以便为该列定义数据类型或其他选项。

错:

FOREIGN KEY fk_events_ID REFERENCES School(ID)

:

school_id INTEGER,
FOREIGN KEY fk_events_ID (school_id) REFERENCES School(ID)

https://sqlite.org/foreignkeys.html以获得更多信息了解外键在SQLite。

在外键中,您需要括号,并且指定约束可能出错的所有内容是一个好习惯,因此您可以确切地知道问题所在在许多情况下,手册可以帮助你在第一时间。https://www.sqlite.org/docs.html

ID INTEGER PRIMARY KEY, 
Name TEXT NOT NULL
); 
CREATE TABLE events ( 
ID INTEGER PRIMARY KEY,
details TEXT NOT NULL,
start_data TEXT NOT NULL,
end_data TEXT NOT NULL,
title TEXT NOT NULL, 
CONSTRAINT fk_events FOREIGN KEY (fk_events_ID) REFERENCES School(ID)
);
CREATE TABLE CALENDAR (
ID INTEGER PRIMARY KEY,
title TEXT NOT NULL,
details TEXT NOT NULL,
start_data TEXT NOT NULL,
end_data TEXT NOT NULL,
subject INTEGER NOT NULL,
CONSTRAINT fk_calendar FOREIGN KEY (fk_CALENDAR_ID) REFERENCES School(ID)
);
CREATE TABLE GRADES (
ID INTEGER PRIMARY KEY, 
title TEXT NOT NULL, 
coefficent REAL NOT NULL, 
value REAL NOT NULL, 
date_time TEXT NOT NULL, 
Subject INTEGER NOT NULL, 
CONSTRAINT fk_grades FOREIGN KEY (fk_GRADES_ID) REFERENCES School(ID)
);```

最新更新