分享Oracle9i中建立自增字段的最新办法

2016-02-19 21:13 0 1 收藏

今天图老师小编要向大家分享个分享Oracle9i中建立自增字段的最新办法教程,过程简单易学,相信聪明的你一定能轻松get!

【 tulaoshi.com - 编程语言 】

  很多人都知道在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";

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  (注意:数据库用户名区分大小写)

  3、重新Compile存储过程pr_CreateIdentityColumn

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

来源:https://www.tulaoshi.com/n/20160219/1625574.html

延伸阅读
ORACLE实现异种数据库连接服务的技术叫做透明网关(Transparent Gateway)。 目前ORACLE利用透明网关可以实现和SQL SERVER、SYBASE、DB2等多种主流数据库的互联。 现在通过oracle访问sybase数据库,把配置oracle9i TRANSPARENT GATEWAY FOR SYBASE的步骤写成文档,供需要的网友参考! 配置TRANSPARENT GATEWAY FOR SYBASE步...
无可否认FreeBSD是最优秀的操作系统之一,但缺少大型商业数据库的支持阻碍了FreeBSD走向高端和企业应用,Oracle作为数据库的领头雁,如果能够在FreeBSD上安家,则是我等FreeBSD FANS的一个鼓舞。经过两天的努力并参考了一个俄文网站的关于在FreeBSD上安装ORACLE8i的介绍,成功地在FreeBSD5.2上安装的ORACLE9i。以下是安装手记。 一 内核配置 ...
说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次...
正在看的ORACLE教程是:Oracle9i取得建表和索引的DDL语句。我们都知道在9i之前,要想获得建表和索引的语句是一件很麻烦的事。我们通常的做法都是通过export with rows=no来得到,但它的输出因为格式的问题并不能直接拿来用。而另一种方法就是写复杂的脚本来查询数据字典,但这对于一稍微复杂的对象,如IOT和嵌套表等,还是无法查到。&n...
在ORACLE中,没有象MS-SQLSERVER中那样子有自增字段,但是如果我们要实现这个功能,有2种方法 1 Trigger sql语句如下: create or replace trigger trigger_name before insert on your_sid.tablename for each row begin declare i number; cursor cur is select max(id) from your_sid.tablename; BEGIN open cur; FETCH...

经验教程

217

收藏

85
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部