Oracle数据库新建自增队列sequeue以及循环执行sql语句

运维同事让我帮他给一个表增加2亿条数据,好方便他测试
我不想用脚本或java代码去执行,于是采用了oracle原生的sql语句
因为不常用,所以记录一下

-- 查询一下这个表当前有多少条数据
SELECT COUNT(*) FROM CUSTOMER_EVENT

-- 查询这个表目前的最大ID
SELECT ID FROM CUSTOMER_EVENT ORDER BY DESC

-- 为customer_event的主键id创建自增队列
CREATE SEQUENCE seq_customerEventId
INCREMENT BY 1 --按1递增
START WITH 1982356434456843 --从哪里开始
NOMAXvalue --不限制最大值, MAXvalue 99999999就是设置最大值
NOCYCLE; --不循环

-- 验证队列
SELECT seq_customerEventId.nextval FROM DUAL --第一次必须先执行nextval
SELECT seq_customerEventId.currval FROM DUAL

-- 创建触发器
CREATE OR REPLACE TRIGGER trigger_customerEventId 
BEFORE INSERT ON CUSTOMER_EVENT --在插入数据前
FOR EACH ROW
WHEN(new.ID IS NULL) --只有当id为空时才触发
BEGIN
	SELECT seq_customerEventId INTO :new.ID FROM sys.dual;
END;

-- 循环执行sql(2亿次)
DECLARE
	x NUMBER;
BEGIN
	x := 0;
	WHILE x < 200000000 LOOP
		x := x + 1;
		INSERT INTO CUSTOMER_EVENT
		(.....)
		VALUES
		(.....);
		COMMIT;
	END LOOP;
END;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值