oracle 实现自增主键

oracle 实现自增主键

一、前言

本来一直都是使用mysql的,mysql使用主键自增是自然不过的;但是工作关系用到oracle,发现没有auto_increment这种简单的实现方法,于是只能使用**序列(sequence)触发器(trigger)**来实现主键自增,顺便记录下;

二、实现主键自动增长

1、创建表格

CREATE TABLE "BC_ES_IK_HOT_WORD" (	
	"ID" NUMBER NOT NULL PRIMARY KEY, 
	"WORD" VARCHAR2(100) NOT NULL,  
	"UPDATE_TIME" DATE NOT NULL );

注:必须带主键

2、创建自增序列

create sequence SEQ_BC_ES_IK_HOT_WORD 
 minvalue 1 
 maxvalue 999999   
 increment by 1    
 start with 1;

创建序列参数格式描述:

CREATE SEQUENCE SEQNAME //序列名字
INCREMENT BY 1 //每次自增1, 也可写非0的任何整数,表示自增,或自减
START WITH 1 //以该值开始自增或自减
MAXVALUE 1.0E20 //最大值;设置NOMAXVALUE表示无最大值
MINVALUE 1 //最小值;设置NOMINVALUE表示无最大值
CYCLE or NOCYCLE //设置到最大值后是否循环;
CACHE 20 //指定可以缓存 20 个值在内存里;如果设置不缓存序列,则写NOCACHE
ORDER or NOORDER //设置是否按照请求的顺序产生序列

3、创建触发器

create trigger TRIG_BC_ES_IK_HOT_WORD      
before insert on BC_ES_IK_HOT_WORD /*触发条件:当表BC_ES_IK_HOT_WORD执行插入操作时触发此触发器*/ 
 for each row   /*对每一行都检测是否触发*/  
begin       
/*触发后执行的动作,在此是取得序列SEQ_BC_ES_IK_HOT_WORD的下一个值插入到表BC_ES_IK_HOT_WORD中的id字段中*/ 
select SEQ_BC_ES_IK_HOT_WORD.nextval into :new.id from dual;  
end; 

4、测试新增语句

已实现自增无需添加主键id

INSERT INTO BC_ES_IK_HOT_WORD (WORD, UPDATE_TIME)
VALUES('测试', sysdate);

四、参考文章

https://www.cnblogs.com/kkdaj/p/12419894.html

https://blog.csdn.net/weixin_42285088/article/details/82222311

https://www.cnblogs.com/sharpest/p/10160370.html

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值