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

PostgreSQL单主键自增表插入问题:仅主键列时插入报错问询

解决单自增主键列的表插入问题

首先得修正你的建表语句——原来的语句只把id设为主键和非空,但没开启自增属性,不同数据库的自增语法不一样,对应写法如下:

按数据库类型设置自增主键

MySQL/MariaDB

CREATE TABLE my_table (
    id INT PRIMARY KEY AUTO_INCREMENT NOT NULL
);

PostgreSQL

-- 兼容旧版本的写法
CREATE TABLE my_table (
    id SERIAL PRIMARY KEY
);
-- PostgreSQL 10及以上推荐用IDENTITY
CREATE TABLE my_table (
    id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
);

SQL Server

CREATE TABLE my_table (
    id INT PRIMARY KEY IDENTITY(1,1) NOT NULL
);

插入数据的正确姿势

当表只有这一个自增主键列时,INSERT INTO my_table () VALUES ();这种写法不符合SQL语法规范,会报错,改用以下方法:

通用写法(多数数据库支持)

直接让数据库使用默认值生成自增ID:

INSERT INTO my_table DEFAULT VALUES;

特定数据库的替代写法

  • MySQL/MariaDB:可以显式指定列并传NULL,自增列会自动忽略NULL生成新值:
INSERT INTO my_table (id) VALUES (NULL);
  • PostgreSQL(IDENTITY):如果用了GENERATED ALWAYS,可以指定列并传DEFAULT:
INSERT INTO my_table (id) VALUES (DEFAULT);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:12:09