SQLite错误1:'near')“:语法错误'。'

时间:2018-04-15 15:23:02

标签: sql sqlite

我正在为学校制作一个项目,但我在SQL中遇到了这个语法错误(我正在使用SQLite)。

此行的目标是创建一个包含Sandwich_IDBread_IDSandwich_price列的空表。 Sandwich_ID是主键,Bread_IDBread表中指定。

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)
);

我仍然有语法错误。

2 个答案:

答案 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。该值是数据的一滴,完全按输入存储。