很多人都知道在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...