oracle 实现自增主键

文章目录

  • oracle 实现自增主键
    • 一、前言
    • 二、实现主键自动增长
      • 1、创建表格
      • 2、创建自增序列
      • 3、创建触发器
      • 4、测试新增语句
    • 四、参考文章

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

你可能感兴趣的:(oracle相关,oracle)