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

如何修改插入测试数据的SQL实现数据库自动生成ID避免重复

解决方案

你的Hibernate配置中已经指定了id使用IDENTITY自增策略,说明onboarding_tasks表的id字段本身已经是自增主键,只需要调整插入SQL,省略id字段的手动赋值,让数据库自动生成即可。

第一步:确认表结构配置(对应你的Hibernate注解逻辑)

不同数据库的自增主键配置对应如下:

  • MySQL:id字段添加AUTO_INCREMENT属性
  • PostgreSQL:id字段类型设为BIGSERIAL,或手动绑定自增序列
  • SQL Server:id字段添加IDENTITY(1,1)属性

第二步:修改插入SQL

你原SQL使用了PostgreSQL的generate_series函数,修改后写法如下:

INSERT INTO onboarding_tasks (business_name)
SELECT 'ABC name ' || generate_series(1,10);

如果是MySQL环境,没有内置generate_series函数,可使用递归CTE实现批量插入:

WITH RECURSIVE num AS (
  SELECT 1 AS n
  UNION ALL
  SELECT n + 1 FROM num WHERE n < 10
)
INSERT INTO onboarding_tasks (business_name)
SELECT CONCAT('ABC name ', n) FROM num;

原理说明

调整后的SQL不会手动指定id值,数据库会基于当前表中已有的最大id值自动向后生成新的唯一id,即使重试运行插入语句,也不会出现主键重复冲突,和你Hibernate中@GeneratedValue(strategy = GenerationType.IDENTITY)的底层逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:57:02