内容摘要:下面我们通过Oracle中的Sequence和Trigger来实现此功能。
很多人都知道在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');
责编:豆豆技术应用
点击搜索更多"Oracle 9i"相关信息
正在加载评论...
- SQL Server 2005与SAP R/3结合完成“TB级”应用
- SQL Server 2005的数据挖掘功能的最佳实践
- SQL Server 2005 Express安装问题解答
- 详述SQL Server 2005对称密钥加密技术
- SQL Server 2005还有多长的路要走?
- 如何利用SQL Server 2005完成大型业务快速报表?
- 如何灵活运用SQL Server 2005 SSIS变量
- SQL Server 2005已经成为用户群最广的数据库
- SQL Server 2005高可用性之日志传送
- MySQL数据库备份方法说明