Oracle 数据库设置主键自增
记录一下
接到一个需求,做系统的操作日志,系统用的是
Oracle
数据库,由于用惯了Mysql
,对于Oracle
没有主键自增觉得很不舒服,参照其他接口的做法,就是主动生成key
,如下:
觉得不好用,所以还是在Oracle
数据库里做了一个序列
和触发器
来实现主键的自增。
navicat 工具创建
- 在其他里找到序列和触发器两个选项
- 新建一个序列
- 参数按需,一般不要缓存和循环(我这里用了循环,因为操作日志表有时会被管理员清空)
4. 同理,新建一个触发器
BEGIN
SELECT BASIC_OPERATE_LOG_ID.nextval into:New.P_KEY from dual;
END;
没有
navicat
工具,可以使用sql代码创建
代码创建
- 先创建序列
BASIC_OPERATE_LOG_ID
(TEST
数据库下)
CREATE SEQUENCE "TEST"."BASIC_OPERATE_LOG_ID" -- BASIC_OPERATE_LOG_ID序列名称
MINVALUE 1 --最小值
MAXVALUE 99999999999 -- 最大值
INCREMENT BY 1 -- 每次步进 1
START WITH 1 -- 开始值 1
NOCYCLE --不循环 ,也可不写
-- CYCLE --循环
NOCACHE; -- 没有缓存
- 创建触发器
BASIC_OPERATE_LOG_ID_INS
(TEST
数据库下)
CREATE TRIGGER "TEST"."BASIC_OPERATE_LOG_ID_INS" --触发器名称 BASIC_OPERATE_LOG_ID_INS
BEFORE INSERT ON "TEST"."BASIC_DATA_OPERATE_LOG" --找到刚刚的序列 BASIC_DATA_OPERATE_LOG
REFERENCING OLD AS "OLD" NEW AS "NEW" FOR EACH ROW WHEN (new.P_KEY IS NULL)
BEGIN
SELECT BASIC_OPERATE_LOG_ID.nextval into:New.P_KEY from dual; --表名BASIC_OPERATE_LOG_ID , 键名P_KEY
END;
测试
结果:
终!