一、建立一張工作表
例:
createtable 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 with1 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;
例:
createorreplace
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列的值
例:
insertinto 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 制定存入快取 也就是記憶體 序列值的個數 備...