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;

版权声明:本文为weixin_45328190原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。