ORACLE中实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ORACLE中实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1695字,纯文字阅读大概需要3分钟。
内容图文
![ORACLE中实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能](/upload/InfoBanner/zyjiaocheng/564/4677cf566d0047f1b7fa103ea972a6e1.jpg)
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 最近在做一个把SQL SERVER中的数据库的表同步到ORACLE 中,排除解决了了一系列如类型不匹配等产生的错误后,终于将数据同步过来了,可是又发现了一个新问题:SQL SERVER中源表的ID是通过IDENTITY(1
欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入
最近在做一个把SQL SERVER中的数据库的表同步到ORACLE 中,排除解决了了一系列如类型不匹配等产生的错误后,终于将数据同步过来了,可是又发现了一个新问题:SQL SERVER中源表的ID是通过IDENTITY(1,1)自增的,ORACLE中的表示通过sequences实现的自增,但问题是:我是通过在SQL SERVER中的存储过程,经由链接服务器直接将数据插入到ORACLE的表中,这样,SQL SERVER中的存储过程中就没办法直接调用ORACLE的sequences进行ID的自增。直接将SQL SERVER中表的ID复制到ORACLE表中又会使得ID重复不唯一。
以下有一种方法,可以让ORACLE中的表实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能,原理是通过sequences与triggers触发器实现。
首先,在ORACLE建立一个sequences:
create sequence SEQ_TABLE_TEST
minvalue 1
maxvalue 999999999
start with 1
increment by 1
cache 20;
再建立一个triggers:
create or replace trigger TGR_TABLE_TEST
before insert on TABLE_TEST
for each row
declare
-- local variables here
begin
if inserting and :new.id is null then
:new.id := SEQ_TABLE_TEST.nextval;
end if;
end TGR_TABLE_TEST;
好了,这样就可以实现自增功能了,无论是正常插入:
insert into TABLE_TEST
values(seq_table_test.nextval,1.1)
还是
insert into TABLE_TEST(value)
values(1.2)
或者是
insert into TABLE_TEST(id,value)
values(null,1.3)
表TABLE_TEST中的ID字段都实现了自增的功能。
另外因为triggers中有:new.id is null的判断,当正常调用seq_table_test.nextval插入时,也不会产生浪费sequences序号的现象。
内容总结
以上是互联网集市为您收集整理的ORACLE中实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能全部内容,希望文章能够帮你解决ORACLE中实现类似SQLSERVER中IDENTITY(1,1)序号自增的功能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。