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