我正在为学校制作一个项目,但我在SQL中遇到了这个语法错误(我正在使用SQLite)。
此行的目标是创建一个包含Sandwich_ID
,Bread_ID
和Sandwich_price
列的空表。 Sandwich_ID
是主键,Bread_ID
在Bread
表中指定。
CREATE TABLE IF NOT EXISTS Sandwiches
(
Sandwich_ID INT,
Bread_ID INT,
Sandwich_price FLOAT,
PRIMARY KEY (Sandwich_ID),
FOREIGN KEY (Bread_ID)
);
错误讯息:
Microsoft.Data.Sqlite.SqliteException:'SQLite错误1:'near“)”:语法错误'。'
我也尝试过十进制而不是浮点数,但仍有错误。
编辑:现在我正在使用参考
CREATE TABLE IF NOT EXISTS Breads
(
Bread_ID INT,
Bread_name VARCHAR(40),
Bread_price FLOAT,
PRIMARY KEY (Bread_ID)
);
CREATE TABLE IF NOT EXISTS Sandwiches
(
Sandwich_ID INT,
Bread_ID INT,
Sandwich_price FLOAT,
PRIMARY KEY (Sandwich_ID),
FOREIGN KEY (Bread_ID) REFERENCES Breads(Bread_ID)
);
我仍然有语法错误。
答案 0 :(得分:2)
外键需要指向某个东西。例如,这里似乎你应该有一个“面包”表或其他类似的东西:
CREATE TABLE IF NOT EXISTS Sandwiches (
Sandwich_ID int,
Bread_ID int,
Sandwich_price float,
PRIMARY KEY (Sandwich_ID),
FOREIGN KEY (Bread_ID) REFERENCES Breads(Bread_IS)
-- Here ---------------^
)
答案 1 :(得分:0)
存储在SQLite数据库中(或由数据库引擎操纵)的每个值具有以下存储类之一:
NULL。该值为NULL值。
INTEGER。该值是一个有符号整数,根据值的大小存储在1、2、3、4、6或8个字节中。
真实。该值为浮点值,存储为8字节IEEE浮点数。
TEXT。该值是一个文本字符串,使用数据库编码(UTF-8,UTF-16BE或UTF-16LE)存储。
BLOB。该值是数据的一滴,完全按输入存储。