ORACLE9I中建立自增字段的方法

原创 2006年05月30日 23:51:00

    我们知道在Oracle中并没有象其他数据库中的自增字段,那么我们怎么来实现Oracle的自增字段功能呢?通常我们都是通过Oracle中的Sequence和Trigger来
下面的方法是我在工作中总结并且多次使用的,较为方便,放于此处与大家分享。
1、首先建立一个创建自增字段的存储过程

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');
... ...

 

Oracle 9i所有版本的最新下载地址(已验证!)

偶多年前在学校时曾安装过Oracle 9i的win版本,后来没用到Oracle就没接触了。现在想学习下Oracle的Linux版本数据库。听使用Oracle的前辈说,现在国内应用得最多的还是Oracl...
  • woswod
  • woswod
  • 2017年03月18日 13:23
  • 3345

Oracle9i 安装完全教程

Oracle9i 安装完全教程 其实,我本来想学会用mysql就ok啦。鉴于教材用的是Oracle9i的数据库,所以就想装多个。。 如果想直接在本机上装Oracle数据库的童鞋注意了,你的...
  • SeanXu2012
  • SeanXu2012
  • 2013年01月28日 15:32
  • 2231

Oracle9iClient简化版的安装与tnsnames配置,sqlplus的连接

由于前几天重新安装了系统,所有的软件都要重新安装,我想到了安装Navicat_for_Oracle_10.0.11.0,用以查询oracle数据库,安装以后,在连接数据时,出现TNS错误,我想到应该是...
  • jaray
  • jaray
  • 2013年11月20日 15:02
  • 4523

oracle9i中test下所有数据迁移到oracle11G中

前两天客户要求换数据库,有原来的oracle9i换成11G,整个过程也比较简单,但是也碰到一些小问题,记录下来便于以后参考: 整个的思路如下,首先在本地服务器的数据库中test用户的数据导出到本地,然...
  • jimmy609
  • jimmy609
  • 2014年01月22日 17:27
  • 6798

使用Lucene为数据库建立索引

一,lucene中比较基础的建立索引步骤(资料:http://www.ourys.com/post/lucene3-0_database_index.html) 1.指定目录索引 2.创建...
  • lkx94
  • lkx94
  • 2015年03月16日 01:12
  • 387

那些字段适不适合建索引?

数据库建立索引常用的规则如下:1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中...
  • WuLex
  • WuLex
  • 2017年04月07日 16:39
  • 2864

数据库的索引以及在哪些列上创建索引

一、深入浅出理解索引结构  实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(non...
  • kingzma
  • kingzma
  • 2015年03月17日 10:24
  • 5204

oracle 9i,10G,11G,各版本下载资源

现在11,10,9i的介质在官网都无法下载了,但是我们有神奇的迅雷,用下面这些地址,直接用迅雷下载。这里包括了10.2.0.5的patch还有11.2.0.3的patch 安装介质 Oracle9i ...
  • rivarola
  • rivarola
  • 2014年12月31日 16:19
  • 4600

[慢查优化]建索引时注意字段选择性 & 范围查询注意组合索引的字段顺序

写在前面的话: 之前曾说过“不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程”,但对于字段选择性差意味着什么,组合索引字段顺序意味...
  • zheng0518
  • zheng0518
  • 2015年10月28日 21:18
  • 1774

哪些字段适合建立索引

经常需要进行更新操作的属性 1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引; 3、经常与其他表进行连接的表,在连接字段上应该建立索引; 4、经常出现在Where子句中的字段,特别...
  • maliao1123
  • maliao1123
  • 2016年09月04日 10:57
  • 4645
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE9I中建立自增字段的方法
举报原因:
原因补充:

(最多只允许输入30个字)