oracle 自动增值列的实现

//在oracle中实现一个自动增值列
--1.创建用户名表
create table users(
userId int primary key,--用户id号
userName varchar(20),--用户名
passwd varchar(20),
email varchar(30),
grade int); --用户级别


--2.为userId列创建序列
create sequence userId_seq minvalue 1 maxvalue 999999 --最小1,最大增长到999999 --nomaxvalue 没有最大值
increment by 1 --每次增加几个
start with 1 --从1开始 
nocache --没有缓存序列 --有缓存序列个数,有助于提高效率,但是可能造成跳号


--3.为表创建触发器
create or replace trigger trg_insert_users
before
insert on users	--在向users表插入数据前
for each row 
begin
select userId_seq.nextval into :new.userId from dual;--冒号要近new
end;


//4.插入数据
insert into users values(userId_seq.Nextval,'test5','test5','test5.com',5);
--插入100万条数据
declare i binary_integer :=1;
begin
loop
insert into users values(userId_seq.Nextval,'test5','test5','test5.com',5);
i :=i+1;
exit when i >999999;
end loop;
end;

不过用这个循环插入这么多的数据,貌似效率很低,还有什么办法更高效地插入大量数据?请各位大侠教一下小弟。



原文地址:https://www.cnblogs.com/tgxblue/p/4217425.html