當業務場景需要運用自動創建序列來實現數據庫表字段的增長(一般用於主鍵),就要對序列有基本的操作能力。
1.創建序列:
CREATE SEQUENCE 序列名
INCREMENT BY 進度值
START WITH 初始值
MAXvalue 最大值
MINVALUE 最小值
CYCLE 循環(NOCYCLE 不循環)
CACHE 緩存個數 (NOCACHE 不設置緩存)
例:
CREATE SEQUENCE SEQ_AI_ZQZT_ZZZ_TEST
START WITH 1
INCREMENT BY 1
MAXVALUE 999999999
NOCYCLE
NOCACHE
查看所有序列:
select * from user_sequences;
運行SQL語句實現自增:(運行一次自增一次)
SELECT SEQ_AI_ZQZT_ZZZ_TEST.NEXTVAL FROM dual
2.修改序列:(如果序列當前值爲4,但是數據庫表中序列字段最大數值已經存在1103的數值,這樣可以通過修改自增進度值來快速實現到1103之後開始自增,再改回進度值爲1)
alter sequence SEQ_AI_ZQZT_ZZZ_TEST increment by 1100;
alter sequence SEQ_AI_ZQZT_ZZZ_TEST increment by 1;
3.刪除序列
drop sequence SEQ_AI_ZQZT_ZZZ_TEST;
4.結合mybatis使用序列,在insert的時候自動新增
<insert id="addUser">
<selectKey keyProperty="userId" resultType="java.lang.String" order="BEFORE">
SELECT SEQ_AI_ZQZT_ROLE_ZT_USER.NEXTVAL FROM dual
</selectKey>
INSERT INTO AI_ZQZT_ROLE_ZT_USER
(
USER_ID,
CITY_CODE,
COUNTY_CODE,
USER_NAME,
MOBILE_PHONE,
USER_CODE,
IS_ZT_MONITOR,
DATA_STATUS,
CITY_NAME,
COUNTY_NAME
)
VALUES
(
#{userId,jdbcType=VARCHAR},
#{cityCode,jdbcType=VARCHAR},
#{countyCode,jdbcType=VARCHAR},
#{userName,jdbcType=VARCHAR},
#{mobilePhone,jdbcType=VARCHAR},
#{userCode,jdbcType=VARCHAR},
#{isZtMonitor,jdbcType=VARCHAR},
'1',
#{cityName,jdbcType=VARCHAR},
#{countyName,jdbcType=VARCHAR}
)
</insert>