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...