Oracle建立和使用序列

zhenghaishu發表於2014-08-12
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/29485627/viewspace-1250106/,如需轉載,請註明出處,否則將追究法律責任。

相關文章