oracle建立表並新增主鍵,設定主鍵自增長

2021-07-11 17:31:06 字數 2028 閱讀 4503

oracle序列詳解和建立自增主鍵

oracle序列主鍵

序列: 是oacle提供的用於產生一系列唯一數字的資料庫物件。

l 自動提供唯一的數值

l 共享物件

l 主要用於提供主鍵值

l 將序列值裝入記憶體可以提高訪問效率

1.首先建立序列,oracle序列的語法格式為:

create

sequence 序列名

[increment by n]

[start with n]

;

1)increment by用於定義序列的步長,如果省略,則預設為1,

如果出現負值,則代表oracle序列的值是按照此步長遞減的。

2)start with 定義序列的初始值(即產生的第乙個值),預設為1。

3)maxvalue 定義序列生成器能產生的最大值。選項nomaxvalue是預設選項,代表沒有最大值定義,

這時對於遞增oracle序列,系統能夠產生的最大值是10的27次方;對於遞減序列,最大值是-1。

4)minvalue定義序列生成器能產生的最小值。選項nomaxvalue是預設選項,

代表沒有最小值定義,這時對於遞減序列,系統能夠產生的最小值是?10的26次方;對於遞增序列,最小值是1。

5)cycle 和nocycle 表示當序列生成器的值達到限制值後是否迴圈。cycle代表迴圈,nocycle代表不迴圈。 如果迴圈,則當遞增序列達到最大值時,迴圈到最小值;對於遞減序列達到最小值時,迴圈到最大值。如果不迴圈,達到限制值後,繼續產生新值就會發生錯誤。

6)cache(緩衝)定義存放序列的記憶體塊的大小,預設為20。nocache表示不對序列進行記憶體緩衝。

對序列進行記憶體緩衝,可以改善序列的效能。

2.刪除oracle序列的語法是drop sequence 序列名;

使用序列會產生裂縫

l 序列在下列情況下出現裂縫:

• 回滾

• 系統異常

例項應用:

1。先sqlplus登入了:

sql> conn scott/tiger;

2。建表:

drop table users ;

create table users(

id number(6) ,

name varchar2(30),

constraint pk_id primary key(id)

);

3。建序列:

create sequence aq1

start with 1

increment by 1

minvalue 1

maxvalue 9999999

nocycle

nocache

noorder;

/或者

drop sequence sq1;

create sequence sq1;

4。建觸發器:

create or replace trigger pn_trigger

before insert on users

for each row

begin

select sq1.nextval into:new.id from sys.dual;

end;

5。好了,insert一條記錄測試一下嘍。。。。

insert into users( name) values(『zhsan』);

select * from users;

建立觸發器

create

orreplace

trigger 觸發器名

before

insert

on 表名

foreach

rowbegin

select 序列名.nextval into:new.主鍵 from dual;

end 觸發器名;

Oracle 建立表並設定主鍵自增

建立資料庫 create table student id number primary key,name varchar 200 not null,varchar 200 create date date 指定表名注釋 comment on table student is 學生表 指定列注釋 c...

Oracle建立表並實現主鍵自增

create table user id number 10 primary key,uname varchar2 50 not null,pwd varchar2 32 tel varchar2 11 email varchar2 50 create sequence user seq incre...

oracle給已有表新增主鍵

1,建立序列名 create sequence customer id seq increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 cache 10 快取一旦定義了customer id seq序列,...