Oracle怎麼在建表時讓主鍵自動遞增

2021-10-22 17:37:21 字數 1626 閱讀 9273

oracle怎麼在建表時讓主鍵自動遞增呢?

首先我們建立乙個測試用的表(這裡就不講建表相關的知識了)。

create table by_admin(

admin_id int primary key ,

admin_username varchar(100) not null,

admin_password varchar(100) not null,

admin_name varchar(100) not null,

admin_*** varchar(100) check(admin_*** in ('m','f')),

admin_tel varchar(100) not null,

admin_email varchar(100) not null,

admin_idcard varchar(100) not null

);

oracle與mysql主鍵遞增的加法不同,oracle需要在建好錶以後給該錶建立乙個序列。

--建立序列格式

create sequence 表名_主鍵名_seq start with 1 increment by 1;

--建立序列

create sequence by_admin_admin_id_seq start with 1 increment by 1;

建好序列以後可以檢視該序列,可以更改(需要管理員許可權)。

--檢視並更改序列

select a.*,rowid from user_sequences a;

有了序列之後還必須要有乙個觸發器來觸發,比如說:當主鍵為空時,系統自動取我們設定的序列值填進去。

--建立觸發器

create or replace trigger by_admin_trigger

before insert on by_admin

for each row

when(new.admin_id is null)

begin

select by_admin_admin_id_seq.nextval into:new.admin_id from dual;

end;

建好觸發器以後可以檢視該觸發器,可以更改(需要管理員許可權)。

--檢視觸發器

select a.*,rowid from user_triggers;

最後我們插入資料來檢測我們的序列。

--插入測試資料

insert into by_admin

values('','a','b','c','m','e','f','g');

--檢視測試結果

select a.*,rowid from by_admin a;

總結就是:建好表——>建立序列——>建立觸發器——>大功告成。

Oracle新增時返回主鍵id

首先是主鍵要自增,不然可以直接獲得id select oa news id.currval from dual insert into oa news name values aaa keyproperty 是去要傳值的主鍵id,在外面用什麼接就取什麼名字 order after before 之後...

ORACLE表主鍵自增

下面用乙個例子來說明自增主鍵的建立 一 先建立一張表 drop table 表名 create table 表名 id integer primary key,主鍵 需要設定成自動增加 name varchar2 20 varchar2 2 二 建立squence drop sequence seq...

oracle 表 主鍵自增

1 建立表 2 建立自動增長序列 create sequence v systemlog sequence 自定義命名 increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值,設定最大值 maxvalue 999999999 nocycl...