oracle中如何建立表的自增ID 通過序列

2022-06-24 07:30:12 字數 2000 閱讀 4781

1、什麼是序列呢?

序列是一資料庫物件,利用它可生成唯一的整數。一般使用序列自動地生成主碼值。乙個序列的值是由特別的oracle程式自動生成,因而序列避免了在運用層實現序列而引起的效能瓶頸。

oracle序列允許同時生成多個序列號,而每乙個序列號是唯一的。 當乙個序列號生成時,序列是遞增,獨立於事務的提交或回滾。容許設計預設序列,不需指定任何子句。該序列為上公升序列

,由1開始,增量為1,沒有上限。

2、建立/修改序列的語法

--建立序列的語法 --

create sequence [user.]sequence_name

[increment by n]

[start with n]

[maxvalue n | nomaxvalue]

[minvalue n | nominvalue];

--修改序列的語法--

alter sequence [user.]sequence_name

[increment by n]

[maxvalue n | nomaxvalue]

[minvalue n | nominvalue];

3、序列引數說明

increment by: 指定序列號之間的間隔,該值可為正的或負的整數,但不可為0。序列為公升序。忽略該子句時,預設值為1。

start with:指定生成的第乙個序列號。在公升序時,序列可從比最小值大的值開始,預設值為序列的最小值。對於降序,序列可由比最大值小的值開始,預設值為序列的最大值。

maxvalue:指定序列可生成的最大值。

nomaxvalue:為公升序指定最大值為1027,為降序指定最大值為-1。

minvalue:指定序列的最小值。

nominvalue:為公升序指定最小值為1。為降序指定最小值為-1026。

4、序列示例

--建立示例表 --

create table student(

stuid number(9) not null,

stuname varchar2(20) not null,

stumsg varchar2(50) null)

-- 建立序列 student_stuid_seq --

create sequence student_stuid_seq

increment by 1

start with 1

minvalue 1

maxvalue 999999999;

-- 更改序列 student_stuid_seq--

alter sequence student_stuid_seq

increment by 2

minvalue 1

maxvalue 999999999;

--獲取序列自增id --

select student_stuid_seq.nextval 自增序列id from dual;

-- 刪除序列 --

drop sequence student_stuid_seq;

--呼叫序列,插入student資料 --

insert into student(stuid,stuname) values(student_stuid_seq.nextval,'張三');

insert into student(stuid,stuname) values(student_stuid_seq.nextval,'李四');

--查詢插入的資料 --

select * from student

5、示例結果

1)建立序列後,執行獲取序列自增id

2)修改序列後,執行獲取序列自增id

如何建立主鍵自增表 oracle

建立表 create table t student id number 10 not null,createtime date not null,constraint pk t student primary key id 新增注釋 comment on table t student is 學生...

ORACLE建立主鍵自增表

建立表,設定主鍵自增 create table stu uerid number 4 not null primary key,username varchar 20 userpass varchar 20 email varchar2 30 grade number 5 commit 小查一下 s...

Oracle如何建立自增主鍵

oracle如何建立自增主鍵 1.建立表並設定主鍵.2.建立序列.3.建立觸發器.www.2cto.com 例如 假設已建立好資料表 表名為tbl name,主鍵列為tbl id,其他列有tbl name tbl age,tbl 然後開始建立oracle序列 sql create sequence ...