Oracle的字段类型 没有像MYSQL 'AUTO_INCREMENT' 功能,要想实现数值递增功能,可以用sequence 来实现
1) 查询当前序列
SELECT SEQUENCE_NAME,MIN_VALUE,MAX_VALUE,INCREMENT_BY,LAST_NUMBER FROM USER_SEQUENCES;2) 创建序列
create sequence sequence_name;
3) 删除序列
drop sequence sequence_name;4) 插入数据时使用 sequence_name.nextval 值
* 11.2 版本sequence 起始值:
SQL> create table student( NO NUMBER(10) NOT NULL, NAME VARCHAR(40) NOT NULL ); 2 3 4 Table created. SQL> SQL> create sequence seq_student_no start with 1 increment by 1; Sequence created. SQL> insert into student values(seq_student_no.nextval, 'student1'); 1 row created. SQL> select * from student; NO NAME ---------- ---------------------------------------- 2 student1这时因为11.2版本中表的创建默认都是以 ' SEGMENT CREATION DEFERRED' 方式创建的,即表结构并不是随着create语句的执行而立即创建
而是直到第一条insert语句执行才会真正创建表
这时insert语句分为两个过程: 1. 创建表, 2. 插入数据
而在这个过程中, sequence.nextval执行了两次,所以会从2开始
要想sequence 从1开始可以采取以下方法之一:
1) alter system set DEFERRED_SEGMENT_CREATION = false;
2) alter session set DEFERRED_SEGMENT_CREATION = false;
3) CREATE TABLE .... SEGMENT CREATION IMMEDIATE;