SQL 无法识别数据类型 SERIAL

SQL cannot identify datatype SERIAL

提前致谢,
我不明白为什么不能将 SERIAL 识别为数据类型。
代码真的很简单。
我还有一个问题: 由于 SERIAL 不是真正的类型,我是否必须在某处定义它?

CREATE TABLE flights (
    id SERIAL PRIMARY KEY,
    origin VARCHAR NOT NULL,
    destination VARCHAR NOT NULL,
    duration INTEGER NOT NULL,
);

看来你需要多研究一点SQL关于数据类型的服务器文档:https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-ver15

SERIAL 在 PostgreSQL 中转换为 INT IDENTITY 在 SQL 服务器上。

也就是说,第二列 origin 被声明为没有长度的 VARCHAR。我不确定它会默认为 1 个还是 30 个位置。无论如何,我建议不要使用没有明确长度的 VARCHAR...

您的 table 定义应如下所示:

CREATE TABLE flights (
    id INT IDENTITY(1, 1) PRIMARY KEY,
    origin VARCHAR(255) NOT NULL,
    destination VARCHAR(255) NOT NULL,
    duration INTEGER NOT NULL,
);

如评论中所述,serial 来自 Postgres。即使在那个数据库中,它的使用现在已经过时,取而代之的是 generated always as identity.

我不知道origindestination的长度是多少。但 。 . .在 SQL 服务器中,从不 使用 char() 或没有长度的相关类型。默认长度因上下文而异,这方面的错误很难调试。