很多人都知道在oracle中並沒有像其他資料庫中的自增欄位,那麼我們怎樣才能實現oracle的自增欄位功能呢?下面我們通過oracle中的sequence和trigger來實現此功能。1、首先建立乙個建立自增字段的儲存過程//written by sun zhenfang 20040903create or replace procedure pr_createidentitycolumn
(tablename varchar2,columnname varchar2)
asstrsql 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 any sequence to "username";
grant create any trigger to "username";(注重:資料庫使用者名稱區分大小寫)3、重新compile儲存過程pr_createidentitycolumn4、搞定,下面我們就可以用這個儲存過程建立自增自段了。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');
Mysql儲存過程(五) SEQUENCE的實現
在 oracle 中,sequence 提供多表多字段可共用乙個不重複值。mysql 中存在自增列,基本可以滿足 pk的要求。但自增列存在限制 a.只能用於表中的乙個字段,一張不能同時存在兩個以上的自增列 b.自增列必須被定義為 key pk或 fk c.自增列不能被多個表共用 d.當insert ...
Mysql儲存過程(五) SEQUENCE的實現
在 oracle 中,sequence 提供多表多字段可共用乙個不重複值。mysql 中存在自增列,基本可以滿足 pk 的要求。但自增列存在限制 a.只能用於表中的乙個字段,一張不能同時存在兩個以上的自增列 b.自增列必須被定義為 key pk 或 fk c.自增列不能被多個表共用 d.當 inse...
mysql 自定義 sequence 儲存過程
mysql本身是沒有sequence的但是我可以自己建立sequence儲存過程.首先我們先建立相關的表,和儲存過程.第一步是建立規則表.drop table if exists seq create table seq id bigint 11 not null auto increment,na...