【问题标题】:Please what is wrong with this code? I get invalid syntax error请问这段代码有什么问题?我收到无效的语法错误
【发布时间】:2020-12-08 00:34:46
【问题描述】:
-- create a table
CREATE TABLE customers
(
    id              INTEGER PRIMARY KEY NOT NULL,
    name            TEXT NOT NULL,
    billing_address TEXT NOT NULL
);

CREATE TABLE products 
(
    id    INTEGER PRIIMARY KEY NOT NULL,
    price NUMBER NOOT NULL
);

CREATE TABLE orders 
(
    id               INTEGER NOT NULL,
    customer_id      NUMBER NOT NULL,
    product_id       NUMBER NOT NULL,
    delivery_address TEXT NOT NULL,

    FOREIGN KEY(customer_id) REFERENCES customers(id),
    FOREIGN KEY(product_id) REFERENCES products(id)
);

【问题讨论】:

  • 您在products table ddl 中使用了noot 而不是not
  • 为了将来参考,请务必发布您遇到的任何错误消息的完整内容 - 全部。
  • 主键?(额外的 i..)看起来有点语法高亮/拼写检查会有很长的路要走......

标签: sql sqlite foreign-keys create-table


【解决方案1】:

如果您运行的是 SQL Server,您的代码存在以下问题:

  • SQL Server 中有NUMBER 数据类型:您可以使用DECIMAL,或浮动类型数据类型,例如FLOAT

  • 外键列的数据类型必须与父列的数据类型匹配。

  • TEXT 是旧数据类型,计划在 SQL Server 的未来版本中删除;你可以改用NVARCHAR

  • 您的代码中还有一些拼写错误。

这行得通:

CREATE TABLE customers (
    id                 INTEGER PRIMARY KEY NOT NULL,
    name               NVARCHAR(100) NOT NULL,
    billing_address    NVARCHAR(100) NOT NULL
);

CREATE TABLE products (
    id                 INTEGER PRIMARY KEY NOT NULL,
    price              DECIMAL(15,2) NOT NULL
);

CREATE TABLE orders (
    id                 INTEGER NOT NULL,
    customer_id        INTEGER NOT NULL,
    product_id         INTEGER NOT NULL,
    delivery_address   NVARCHAR(100) NOT NULL,
    FOREIGN KEY(customer_id) REFERENCES customers(id),
    FOREIGN KEY(product_id)  REFERENCES products(id)
);

如果您正在运行 SQLite(您也对其进行了标记),那么您只需修正 NOOT NULL 上的拼写错误。我还建议对齐外键列的数据类型,尽管 SQLite 仍然允许将 NUMBER 映射到 INTEGER

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    相关资源
    最近更新 更多