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
相关产品推荐
相关产品推荐

