Oracle使用序列和觸發器設定自增字段

2022-06-21 13:36:13 字數 1362 閱讀 3762

一、建立一張工作表

例:

create

table tv(id number

primary

key,tvname varchar(16),ispass number);

二、先建立乙個序列

create sequence [序列名]

minvalue 1 —— 最小值

nomaxvalue —— 不設定最大值

start with 1 —— 從1開始計數

increment by 1 —— 每次加1個

nocycle —— 一直累加,不迴圈

nocache; —— 不建緩衝區

例:

create sequence seq_tv start with

1 increment by

1;

三、建立觸發器

create or replace trigger [觸發器名] before

insert on [表名] for each row when

(new.id is null) --只有在id為空時,啟動該觸發器生成id號

begin

select [序列名].nextval into :new.id from dual;

end;

例:

create

orreplace

trigger tiger_tv before insert

on tv for each row when (new.id is

null

or new.id =0)

begin

select seq_tv .nextval into :new.id from dual;end;

備註:into :new.id之間的冒號需要挨著new.id,不然不生效

四、插入資料時不用插入id,只插入其他資料,會自動增加id列的值

例:

insert

into tv (tvname,ispass) values ('

1999

',1);

備註:以上方法試了可行,只需要把以上四個例子依次在pl/sql中執行即可。網上有說在entityframework使用自增時,在需要自增的字段上增加[databasegenerated(databasegeneratedoption.identity)],我試過了不行,在model1.edmx模型上選擇表中的id,設定id的屬性storegeneratedpattern為identity,試了多次,依舊不行,有試過此方法的希望說明一下注意事項!謝謝!

Oracle 序列和觸發器的使用

今天用oracle client建表時用到序列和觸發器,記錄一下它們的用法 主要是通過建立序列和觸發器實現表的主鍵自增。首先建立序列,序列的語法格式為 create sequence name increment by n start with n increment by 用於定義序列的步長,如果...

Oracle 序列,觸發器

序列是什麼 序列就是按照一定的規則,不斷增長 不斷減少 的乙個數字 用於我們資料庫表裡 作為資料的乙個唯一標識。序列的語法 建立序列 create sequence seq objid 建立乙個名稱為seq objid 的序列 increment by 1 每次增長1 1,2,3,4,5,6,7,s...

Oracle 序列 觸發器的使用

oracle 序列 create sequence emp sequence 序列名 increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 cache 10 制定存入快取 也就是記憶體 序列值的個數 備...