1、方式一:使用序列和触发器
2、方式二:仅使用序列
- sql>CREATESEQUENCEtest_sequence2
- 2incrementby1--每次递增1
- 3startwith1--从1开始
- 4nomaxvalue--没有最大值
- 5minvalue1--最小值=1
- 6NOCYCLE;--不循环
- Sequencecreated.
- sql>CREATETABLEtest_create_tab2(
- 2idINT,
- 3valVARCHAR(10),
- 4PRIMARYKEY(id)
- 5);
- Tablecreated.
- sql>CREATEORREPLACETRIGGERBeforeTestCreate2Insert
- 2BEFOREINSERTONtest_create_tab2
- 3FOREACHROW
- 4BEGIN
- 5SELECTtest_sequence2.nextvalINTO:new.idFROMdual;
- 6END;
- 7/
- Triggercreated.
- sql>INSERTINTOtest_create_tab2(val)VALUES('NOid');
- 1rowcreated.
- sql>INSERTINTOtest_create_tab2(id,val)VALUES(1,'idnouse');
- 1rowcreated.
- sql>SELECT*FROMtest_create_tab2;
- IDVAL
- ------------------------------
- 1NOid
- 2idnouse
2、方式二:仅使用序列
- [TEST1@orcl#27-12月-10]sql>createtabley_one(idnumber);
- 表已创建。
- [TEST1@orcl#27-12月-10]sql>createsequencey_seqstartwith1incrementby1nomaxvaluenocycle
- 2;
- 序列已创建。
- [TEST1@orcl#27-12月-10]sql>insertintoy_onevalues(y_seq.nextval);
- 已创建1行。
- [TEST1@orcl#27-12月-10]sql>insertintoy_onevalues(y_seq.nextval);
- 已创建1行。
- [TEST1@orcl#27-12月-10]sql>insertintoy_onevalues(y_seq.nextval);
- 已创建1行。
- [TEST1@orcl#27-12月-10]sql>commit;
- 提交完成。
- [TEST1@orcl#27-12月-10]sql>select*fromy_one;
- ID
- ----------
- 1
- 2
- 3
1、创建表
create table note(
id number(20) NOT NULL primary key,/*主键,自动增加*/ name varchar2(20));
2、创建自动增长序列
Create Sequence addAuto_Sequence
Increment by 1 -- 每次加几个
start with 1 -- 从1开始计数
nomaxvalue -- 不设置最大值,设置最大值:maxvalue 9999
nocycle -- 一直累加,不循环
cache 10;
3、创建触发器
Create trigger addAuto before
insert on note(表名) for each row /*对每一行都检测是否触发*/
begin
select addAuto_Sequence.nextval into:New.id from dual;
end;
4、提交 commit;
5、测试 insert into note(name) values(‘lisi’);