ORACLE9I中建立自增字段的方法

ZDNet软件频道 时间:2008-09-22 作者:孙振芳 | CSDN 我要评论()
本文关键词:自增字段 建立 Oracle9i 数据库 Oracle
ORACLE中建立自增字段的方法。
我们知道在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");
... ...

 

自增字段

建立

Oracle9i

数据库

Oracle


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134