分享Oracle9i中建立自增字段的最新辦法

2021-04-16 21:38:40 字數 1814 閱讀 1864

很多人都知道在oracle中並沒有像其他資料庫中的自增欄位,那麼我們怎樣才能實現oracle的自增欄位功能呢?下面我們通過oracle中的sequence和trigger來實現此功能。

1、首先建立乙個建立自增字段的儲存過程

//written 

bysun zhenfang 

20040903

create

orreplace

procedure

pr_createidentitycolumn

(tablename 

varchar2

,columnname 

varchar2)as

strsql 

varchar2

(1000

);begin

strsql:='

create sequence seq_'||

tablename||'

minvalue 1 maxvalue 999999999999999999

start with 1 increment by 1 nocache';

execute

immediate strsql;

strsql:='

create or replace trigger trg_'||

tablename||'

before insert on '||

tablename||'

for each row begin

select seq_'||

tablename||'

.nextval into :new.'||

columnname||'

from dual;end;';

execute

immediate strsql;

end;

2、oracle中執行動態sql時要顯示授權(即使該使用者擁有該相關許可權)

grant

create

anysequence 

to"username";

grant

create

anytrigger

to"username";

//注意:資料庫使用者名稱區分大小寫)

3、重新compile儲存過程pr_createidentitycolumn

4、搞定,下面我們就可以用這個儲存過程建立自增自段了。

5、呼叫儲存過程建立自增字段(note: 第乙個引數是表名,第二個引數為自增字段的名字)

exec

pr_createidentitycolumn(

'sdspdept',

'deptid');

exec

pr_createidentitycolumn(

'sdspuser',

'userid');

exec

pr_createidentitycolumn(

'sdspsysrole',

'sysroleid');

exec

pr_createidentitycolumn(

'sdspfp',

'sysfpid');

exec

pr_createidentitycolumn(

'sdspphasemodel',

'phasemodelid');

exec

pr_createidentitycolumn(

'sdspphase',

'phaseid');

備註:本文引用自http://soft.chinabyte.com/69/7586569.shtml

分享Oracle9i中建立自增字段的最新辦法

1 首先建立乙個建立自增字段的儲存過程 written by sun zhenfang 20040903 create or replace procedure pr createidentitycolumn tablename varchar2,columnname varchar2 asstrs...

解除安裝Oracle 9i

1 停止所有oracle服務 2 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracle目錄 2 在hkey local machine system controlset001 services下,刪除所有oracle項 3 在hke...

oracle9i解除安裝

今天裝了oracle 9i,後來重灌遇到問題因為解除安裝未乾淨。幾經周折終於成功,現將解除安裝步驟供以後參考 1 停止服務 開啟 服務 然後停止所有oracle服務 2 刪除程式 3 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracl...