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

如何通过Oracle SQL重复指定次数向表插入相同值并生成唯一ID

回答

完全可行,你的需求可以通过多种方式实现,核心逻辑是每次调用SEQ_ID.NEXTVAL都会获取序列的下一个唯一值,确保ID字段不会重复。

方法1:PL/SQL循环执行

如果是在Oracle数据库环境中,最直接的方式是写一个简单的PL/SQL循环来执行100次插入:

BEGIN
  FOR i IN 1..100 LOOP
    INSERT INTO EmailListTable (ID, EmailIndctr, TimeStamp)
    VALUES (SEQ_ID.NEXTVAL, 0, SYSDATE);
  END LOOP;
  COMMIT;
END;
/

执行这段代码会一次性完成100条数据的插入,最后提交事务即可。

方法2:单条INSERT批量插入(更高效)

如果追求性能,推荐用CONNECT BY生成100行数据,通过单条INSERT语句完成批量插入,减少数据库的上下文切换开销:

INSERT INTO EmailListTable (ID, EmailIndctr, TimeStamp)
SELECT SEQ_ID.NEXTVAL, 0, SYSDATE
FROM DUAL
CONNECT BY LEVEL <= 100;
COMMIT;

这种方式比循环执行效率更高,适合批量插入场景。

注意事项

  • 你的原插入语句单独执行100次也是可行的(比如在客户端脚本、SQL工具中重复执行100遍),每次执行SEQ_ID.NEXTVAL都会自动生成新的唯一ID。
  • 如果你希望TimeStamp字段的值完全相同(而不是每次执行的当前时间),需要把SYSDATE替换成固定的日期值,例如TO_DATE('2024-05-20 14:30:00', 'YYYY-MM-DD HH24:MI:SS')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:13:17