1 首先是建表语句
create table student (
student_id number(8) not null primary key, --主键列
first_name varchar2(50), -- 名字
last_name varchar2(50) -- 姓
);
2 创建自增序列
create sequence seq_student
minvalue 1 --最小值
nomaxvalue --最大值
start with 1 --起始值
increment by 1 --增长基数
nocycle --不循环,一直增加
nocache ; -- 不使用缓存
到这里其实就可以使用了,只是在插入的时候必须要自己调用,像这样
insert into student(student_id,first_name,last_name) values(seq_student.nextval,'','');
为了可以不关注主键列,创建一个触发器。
3 创建触发器(插入数据时触发)
create trigger tri_student_ins
before insert on student for each row when (new.student_id is null)
begin
select seq_student.nextval into:new.student_id from dual;
end;
这样就可以插入数据了
insert into student(first_name,last_name) values('','');
4 写一个pl/sql代码块,批量插入数据
declare
i number := 1;
v_first_name varchar2(50);
v_last_name varchar2(50);
begin
for i in 1 .. 200
loop
v_first_name := '' || to_char(i);
v_last_name := '' || to_char(i);
insert into student(first_name,last_name) values(v_first_name,v_last_name);
commit;
end loop;
end;
其他:
create sequence seq_T_STLMERC_INFO_TEST
minvalue 1 --最小值
nomaxvalue --最大值
start with 1 --起始值
increment by 1 --增长基数
nocycle --不循环,一直增加
nocache -- 不使用缓存
或者
create sequence T_STLMERC_INFO_TEST increment by 1 start with 1;
– 创建触发器(插入数据时触发
create trigger tri_T_STLMERC_INFO_TEST
before insert on T_STLMERC_INFO_TEST for each row when (new.id is null)
begin
select seq_T_STLMERC_INFO_TEST.nextval into:new.id from dual;
end;
declare i integer; v_OWN_ORG_NO varchar2(50);
begin i:=0;
for i in 1..50000 loop v_OWN_ORG_NO := '' || to_char(i);
insert into T_STLMERC_INFO_TEST (STL_MERC_ID, MERC_ID, STOE_ID, OWN_ORG_NO, MERC_NM, TM_SMPPE, TM_SMP, TYPE_NM, STAIR_ORG_ID, STAIR_ORG_NAME, SUBCLASS, SUBTYPE, ORGANAME, GENERA, MERC_CNM)
values ('85714018062L003', '800161000001273', '102161080620006', v_OWN_ORG_NO, '天津测试商户号11门店', '', '20210603203208', '', '1', '互联网事业部', '', '', '互联网事业部', '2', '巨方品牌营销策程度有限公司');
--insert into T_STLMERC_INFO_TEST select * from T_STLMERC_INFO;
end loop;
end;