SQL无法识别串行数据类型

SQL无法识别串行数据类型,sql,sql-server,sqldatatypes,Sql,Sql Server,Sqldatatypes,提前感谢, 我不明白为什么串行不被识别为数据类型。 代码非常简单。 我还有一个问题: 既然SERIAL不是一个真正的类型,我需要在什么地方定义它吗 CREATE TABLE flights ( id SERIAL PRIMARY KEY, origin VARCHAR NOT NULL, destination VARCHAR NOT NULL, duration INTEGER NOT NULL, ); 您似乎需要进一步了解有关数据类型的SQL Server文

提前感谢,
我不明白为什么串行不被识别为数据类型。
代码非常简单。
我还有一个问题: 既然SERIAL不是一个真正的类型,我需要在什么地方定义它吗

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

您似乎需要进一步了解有关数据类型的SQL Server文档:

PostgreSQL中的串行转换为SQL Server上的
INT-IDENTITY


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

您的表定义应该如下所示:

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。即使在那个数据库中,它的使用现在也已经过时了,取而代之的是始终作为标识生成的


我不知道
起点
终点
的长度是多少。但是在SQL Server中,切勿使用无长度的
char()
或相关类型。默认长度因上下文而异,此区域中的错误很难调试。

因为SQL Server-它是一种特定于PostgreSQL的类型。啊,PostgreSQL和SQL之间有很大区别吗?PostgreSQL使用SQL作为其查询语言(就像每个关系数据库一样)。但是,PostgreSQL和Microsoft SQL Server(或任何其他数据库产品)之间确实存在差异。@AleksandreBregadze数据库产品彼此非常不同。没有一个数据库能提供比SQL标准更基本的遵从性。所有数据库都使用自己的扩展名
SERIAL
是一个自动递增的int。您可以使用
int-IDENTITY(1,1)
创建相同的扩展名。要获得长字符,请使用
bigint标识(1,1)