posts - 58,  comments - 121,  trackbacks - 30
 

就像大家都有所共识的那样,在Oracle里并没有像其他数据库中的那种自增字段,那么我们怎样才能实现Oracle的自增字段功能呢?这篇文章就来介绍下通过Oracle中的Sequence和Trigger来实现此功能。
--1、首先建立一个创建自增字段的存储过程

 1create or replace procedure pr_CreateIdentityColumn
 2(
 3  tablename nvarchar2,
 4  columnname nvarchar2
 5)
 6as
 7  strsql varchar2(1000);
 8begin
 9  strsql := 'create sequence seq_'||tablename||'
10  minvalue 1
11  maxvalue 2000000000
12  start with 1000000001
13  increment by 1
14  nocache
15  order';
16  execute immediate strsql;
17
18  strsql := 'create or replace trigger trg_'||tablename||'
19  before insert on '||tablename||'
20  for each row
21  begin
22  select seq_'||tablename||'.nextval into :new.'||columnname||' from dual;
23  end;';
24  execute immediate strsql;
25end;


--2、Oracle中执行动态SQL时要显示授权(即使该用户拥有该相关权限)(注意:数据库用户名区分大小写) 
    GRANT CREATE ANY SEQUENCE TO "ZZQ";
    GRANT CREATE ANY TRIGGER TO "ZZQ"; 
    GRANT CREATE ANY TABLE TO "ZZQ";  
    GRANT CREATE ANY VIEW TO "ZZQ";

--3、重新Compile存储过程pr_CreateIdentityColumn

--4、搞定,下面我们就可以用这个存储过程建立自增自段了。

--5、调用存储过程建立自增字段(Note: 第一个参数是表名,第二个参数为自增字段的名字)
    begin 
      pr_createidentitycolumn('tb_admin','admin_id');
    end;


posted on 2007-11-07 14:38 datasky 阅读(444) 评论(0)  编辑 收藏 网摘 所属分类: Oracle

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索


China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!

相关文章:

相关链接:


 

欢迎加入Asp.net高手MSN群

  • asp.net.group#hotmail.com
  • asp.net_group#hotmail.com

与我联系

搜索

 

常用链接

留言簿

我管理的小组

我的标签

随笔分类(71)

相册

blogs链接

积分与排名

  • 积分 - 35317
  • 排名 - 1299

最新评论