Oracle创建和使用序列
1 语法
create sequence 序列名称
2 创建序列
SQL> create sequence emp_seq;
Sequence created.
序列是一个数据库对象,因此可以在数据字典中获得其信息。与序列相关的视图为user_objects和user_sequences。
SQL> col object_name format a15;
SQL> col object_type format a15;
SQL> col status format a15;
SQL> select object_name, object_type, status from user_objects where lower(object_name) = 'emp_seq';
OBJECT_NAME OBJECT_TYPE STATUS
--------------- --------------- ---------------
EMP_SEQ SEQUENCE VALID
SQL> col sequence_name format a15;
SQL> col min_value format 99999;
SQL> col increment_by format 99999;
SQL> select sequence_name, min_value, max_value, increment_by from user_sequences where lower(sequence_name) = 'emp_seq';
SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY
--------------- --------- ---------- ------------
EMP_SEQ 1 1.0000E+28 1
3 使用序列
在序列创建以后,要先使用nextval,然后才能使用currval。否则会报错。
SQL> select emp_seq.nextval from dual;
NEXTVAL
----------
1
4 指定序列初始值
语法:
create sequence 序列名称 start with 初始值
获取表emp_copy的最大empno值,并利用start with创建序列
SQL> select max(empno) from emp_copy;
MAX(EMPNO)
----------
7982
SQL> create sequence emp_copy_seq start with 7983;
Sequence created.
可以利用emp_copy_seq的nextval属性作为empno给表emp_copy插值
SQL> insert into emp_copy(empno, ename) values(emp_copy_seq.nextval, 'Li Si');
1 row created.
验证
SQL> select empno, ename from emp_copy where empno = 7983;
EMPNO ENAME
---------- ---------------
7983 Li Si
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28211342/viewspace-2136860/,如需转载,请注明出处,否则将追究法律责任。