1、方式一:使用序列和触发器
- 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’);