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

如何让SQL的ID从0001(4位数字)开始自动递增?

实现从0001开始的4位自动递增ID

完全可以实现,通常有两种思路:整数自增+查询时格式化(推荐,性能更优),或者存储为带前导零的字符串(适合特殊存储需求),以下是主流数据库的具体实现方式:

方法1:整数自增+查询格式化(推荐)

数据库底层用整数存储自增ID,仅在查询展示时格式化为4位带前导零的字符串,这种方式既保留了整数存储的高效性,又能满足显示需求。

MySQL

  1. 创建表并设置自增起始值为1:
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL
) AUTO_INCREMENT = 1;
  1. 查询时用LPAD函数补零:
SELECT LPAD(id, 4, '0') AS id, name FROM users;

插入数据后执行上述查询,就能得到0001、0002格式的ID。

SQL Server

  1. 创建表,设置自增列起始值为1:
CREATE TABLE users (
    id INT IDENTITY(1,1) PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
  1. 查询时格式化输出:
-- 方式1:使用FORMAT函数
SELECT FORMAT(id, '0000') AS id, name FROM users;
-- 方式2:使用RIGHT拼接补零
SELECT RIGHT('0000' + CAST(id AS VARCHAR(4)), 4) AS id, name FROM users;

PostgreSQL

  1. 创建自增序列和表:
CREATE SEQUENCE users_id_seq START WITH 1 INCREMENT BY 1;
CREATE TABLE users (
    id INT PRIMARY KEY DEFAULT nextval('users_id_seq'),
    name VARCHAR(50) NOT NULL
);
  1. 查询时格式化:
SELECT LPAD(id::TEXT, 4, '0') AS id, name FROM users;

方法2:存储为带前导零的字符串(不推荐)

如果业务要求必须将ID存储为0001这类字符串,可以通过触发器自动生成:

MySQL示例

  1. 创建表:
CREATE TABLE users (
    id VARCHAR(4) PRIMARY KEY,
    name VARCHAR(50) NOT NULL
);
  1. 创建触发器自动生成ID:
DELIMITER //
CREATE TRIGGER generate_user_id BEFORE INSERT ON users
FOR EACH ROW
BEGIN
    DECLARE next_id INT;
    -- 获取当前最大ID的数值加1,若表为空则从1开始
    SELECT IFNULL(MAX(CAST(id AS UNSIGNED)), 0) + 1 INTO next_id FROM users;
    SET NEW.id = LPAD(next_id, 4, '0');
END //
DELIMITER ;

插入数据时无需指定id字段,触发器会自动生成符合要求的4位ID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:45:41