时间: 2021-07-31 作者:daque
咱们领会在oracle中并没有象其余数据库中的自增字段,那么咱们如何来实行oracle的自增字段功效呢?常常咱们都是经过oracle中的sequence和trigger来 底下的本领是我在处事中归纳而且屡次运用的,较为简单,放于此处与大师瓜分。 1、开始创造一个创造自增字段的保存进程 //written by sun zhenfang 20040903 create or replace 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 any sequence to "username"; grant create any trigger 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');