You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pgAdmin 4创建含自增字段数据库报错:AUTO_INCREMENT语法错误

解决PostgreSQL中CREATE TABLE时AUTO_INCREMENT的语法错误

嘿,你这问题我熟!PostgreSQL根本不认识AUTO_INCREMENT这个关键字——那是MySQL/MariaDB专属的语法,所以才会报语法错误。给你两种靠谱的解决办法:

方案1:用SERIAL类型(传统常用方式)

SERIAL是PostgreSQL专门搞的自增整数语法糖,它会自动帮你搞定序列创建、默认值设置这些琐事,还自带NOT NULL属性。修改后的建表语句如下:

CREATE TABLE Finance (
    IDNumber SERIAL,
    FinName varchar(50) NOT NULL,
    PRIMARY KEY(IDNumber)
);

注:SERIAL本身就包含了NOT NULL,所以不用额外写,当然写了也不报错。

方案2:用IDENTITY列(PostgreSQL 10+官方推荐)

从PostgreSQL 10版本开始,官方更推荐用符合SQL标准的IDENTITY语法,比SERIAL更规范灵活。如果想强制让数据库自动生成ID(不允许手动插入),用这个:

CREATE TABLE Finance (
    IDNumber int NOT NULL GENERATED ALWAYS AS IDENTITY,
    FinName varchar(50) NOT NULL,
    PRIMARY KEY(IDNumber)
);

要是偶尔需要手动指定ID值(比如批量导入历史数据),就换成GENERATED BY DEFAULT AS IDENTITY,这样没传ID时自动生成,传了就用你给的值:

CREATE TABLE Finance (
    IDNumber int NOT NULL GENERATED BY DEFAULT AS IDENTITY,
    FinName varchar(50) NOT NULL,
    PRIMARY KEY(IDNumber)
);

测试一下

不管用哪种方案,插入数据时都不用指定IDNumber,数据库会自动帮你生成:

INSERT INTO Finance(FinName) VALUES ('日常开支账户');
SELECT * FROM Finance;

执行后你会看到IDNumber自动生成了1,下次插入就会是2,完美实现你要的数字生成器效果~

内容的提问来源于stack exchange,提问作者bhr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:06:57