Oracle Sequence 实现自增主键

由于Oracle不支持MySql的auto_increment,为了实现自动生成主键的操作在Oracle上,之前写了一篇文章是借助了 Oralce Sequence(序列)+ Oracle Trigger(触发器)来实现的:

https://blog.csdn.net/libertine1993/article/details/54705928

但是触发器不可靠且耗性能,于是有了这篇文章,我们利用序列的NEXTVAL操作来获取自增主键。下面来看下该如何实现:

实例使用的是Mybatis+Oralce Sequence,对没使用Mybatis的童鞋来说,也可以看下,因为思路都是一样的,根本上来讲,都是借助了Sequence的NEXTVAL操作。


1.首先我们还是要创建一个序列

--创建一个从1开始,最大值为99999999999999999999,每次自增+1,
--缓存10条的一个属主为myDatabaseAdmin名为myOralceSeq的序列
create sequence myDatabaseAdmin.myOralceSeq
increment by 1 
start with 1 
maxvalue 99999999999999999999
cache 10;

2.创建好序列后,我们再创建一个mapper来调用数据库进行序列的NEXTVAL操作,获取下一个序列的值。

import org.apache.ibatis.annotations.Select;
public interface MySequenceMapper {
	@Select("SELECT myDatabaseAdmin.myOralceSeq.NEXTVAL FROM DUAL")
	String nextSequenceValue();
}

这里使用了@Select注解,所以连对应的xml文件都不需要配。如果不用@Select的话,就自己写一个对应的xml文件吧。


那么,当我们需要插入新的记录的时候,就调用一次nextSequenceValue()方法来获取下一条记录的主键,作为参数一并传递给插入语句就行辣。时间比较仓促,就不附上具体的运行效果截图和完整代码结构了,不明白的地方欢迎留言。




猜你喜欢

转载自blog.csdn.net/libertine1993/article/details/80738763
今日推荐