Oracle 表的自增長建立

2022-07-01 22:15:15 字數 1291 閱讀 6770

oracle建立自增長要先寫序列還要去寫觸發器,不像mssqlserver那樣方便。但也是麻煩,記錄如下:

oracle中,可以為每張表的主鍵建立乙個單獨的序列,然後從這個序列中獲取自動增加的識別符號,把它賦值給主鍵。例如一下語句建立了乙個名為customer_id_seq的序列,這個序列的起始值為1,增量為2。

create sequence customer_id_seq increment by 2 start with 1

一旦定義了customer_id_seq序列,就可以訪問序列的curval和nextval屬性。

以下sql語句先建立了customers表,然後插入兩條記錄,在插入時設定了id和name欄位的值,其中id欄位的值來自於customer_id_seq序列。最後查詢customers表中的id欄位。

create table customers(id int primary key not null, name varchar(15));

insert into customers values(customer_id_seq.nextval, 'name1');

insert into customers values(customer_id_seq.nextval, 'name2');

select id from customers;

如果在oracle中執行以上語句,查詢結果為:

從上述插入語句可以發現,如果每次都要插入customer_id_seq.nextval的值會非常累贅與麻煩,因此可以考慮使用觸發器來完成這一步工作。

建立觸發器trg_customers

create or replace

trigger trg_customers before insert on customers foreach row

begin

select customer_id_seq.nextval into :new.id fromdual;

end;

插入一條記錄

insert into customers(name) values('test'); 

這是我們會發現這一條記錄被插入到資料庫中,並且id還是自增長的。

建立的序列可以在這裡檢視到:

Oracle 表的自增長建立

oracle 表的自增長建立 oracle建立自增長要先寫序列還要去寫觸發器,不像mssqlserver那樣方便。但也是麻煩,記錄如下 oracle中,可以為每張表的主鍵建立乙個單獨的序列,然後從這個序列中獲取自動增加的識別符號,把它賦值給主鍵。例如一下語句建立了乙個名為customer id se...

Oracle建立表和自增長主鍵

建立表 不帶自動標示 create table product pid number 15 primary key not null,pname varchar2 20 not null commit insert into product pid,pname values 1,美瞳 commit ...

oracle建立自增長主鍵

建表 使用者必須被顯示的賦予建立觸發器的許可權才可以建立trigger 1 用sys 1234登陸sqlplus 2 在command視窗輸入 grant create any trigger to sprita1 3 提示grant succeeded表明賦予成功 建立自增長主鍵的表 create...