Oracle 主键自增

说明:第一次做项目使用oracle发现无法像mysql那样在客户端设置主键自增长,oracle必须使用语句生成序列。

(细节:oracle想要主键自增,必须创建序列,在所用的框架(已myBatis举例),加上SENDCOLLNOTICEID.nextval(序列名.nextval)

创建触发器则不用改框架的配置文件。再同一个数据库中所有的序列和触发器名称是禁止重复的。一张表中的序列叫ID,另一张表中的序列就不能再叫ID,触发器也一样,不能重复)


创建oracle 序列语句

CREATE SEQUENCE SENDCOLLNOTICEID -- SENDCOLLNOTICEID这个就是后面要用到这个序列号时引用的名称

INCREMENT BY 1  -- 每次加几个

START WITH 1   -- 从1开始计数

NOMAXVALUE   -- 不设置最大值

NOCYCLE     -- 一直累加,不循环

--CACHE 100;         -- 缓存值 100==========不理解缓存值一般不使用                

再myBatis 中使用序列方法:

<insert id="insertSelective" parameterType="com.test.entity.TF_NOTICE">

   insert into TF_NOTICE

   <trim prefix="("suffix=")" suffixOverrides=",">

        REPLY_ID ,<!-- 主键id/或者自增的列。序列的使用方法 -->

     <if test="suffId !=null" >

       NOTICE_ID,

     </if>

   </trim>

   <trim prefix="values ("suffix=")" suffixOverrides=",">

         SENDCOLLNOTICEID.nextval,<!-- 序列的使用方法 -->

     <if test="noticeId!=null" >

        #{noticeId,jdbcType=DECIMAL},

     </if>

   </trim>

 </insert>



创建 oracle触发器语句

--CFQ_TF_SEARCH_REPLY  触发器名称

--TF_NOTICE                      表名

-- REPLY_ID                        主键

--SENDCOLLNOTICEID      序列名

create triggerCFQ_TF_SEARCH_REPLY  before

insert on TF_REPLY  for each row when (new.REPLY_ID is null)

begin

select SENDCOLLNOTICEID.nextval into:new.REPLY_ID  from dual;

 end;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值