oracle数据库实现id自增

推荐的方式:序列加触发器

1、创建序列

CREATE SEQUENCE GEN_TABLE_sequence
START WITH 1              -- 序列起始值
INCREMENT BY 1            -- 每次增加的数值
NOCACHE                   -- 不缓存(可选)
NOCYCLE;                  -- 不循环(可选)

解析: GEN_TABLE_sequence为序列名称, START WITH 设置序列的初始值,INCREMENT BY设置序列每次增加的值

2、创建表

CREATE TABLE "T_ORACLE_GEN_TABLE" 
   (	"TABLE_ID" NUMBER(19,0) PRIMARY KEY, 
	"TABLE_NAME" VARCHAR2(200) default '', 
	"TABLE_COMMENT" VARCHAR2(500) default '', 
	"SUB_TABLE_NAME" VARCHAR2(64) default null, 
	"SUB_TABLE_FK_NAME" VARCHAR2(64) default null, 
	"CLASS_NAME" VARCHAR2(100) default '', 
	"TPL_CATEGORY" VARCHAR2(200) default 'crud',
	"TPL_WEB_TYPE" VARCHAR2(30) default '',
	"PACKAGE_NAME" VARCHAR2(100), 
	"MODULE_NAME" VARCHAR2(30), 
	"BUSINESS_NAME" VARCHAR2(30), 
	"FUNCTION_NAME" VARCHAR2(50), 
	"FUNCTION_AUTHOR" VARCHAR2(50), 
	"GEN_TYPE" CHAR(1) default '0', 
	"GEN_PATH" VARCHAR2(200) default '/', 
	"OPTIONS" VARCHAR2(1000), 
	"CREATE_BY" VARCHAR2(64) default '', 
	"CREATE_TIME" DATE, 
	"UPDATE_BY" VARCHAR2(64) default '', 
	"UPDATE_TIME" DATE, 
	"REMARK" VARCHAR2(500) default null
   );
COMMENT ON TABLE T_ORACLE_GEN_TABLE IS '代码生成业务表';

3、创建触发器

CREATE OR REPLACE TRIGGER GEN_TABLE_trigger -- 创建触发器的名称
BEFORE INSERT ON T_ORACLE_GEN_TABLE -- 指定对应的表
FOR EACH ROW
BEGIN
    SELECT GEN_TABLE_sequence.NEXTVAL INTO :NEW.TABLE_ID FROM dual;
END;

解析: SELECT GEN_TABLE_sequence.NEXTVAL INTO :NEW.TABLE_ID FROM dual;中GEN_TABLE_sequence为序列名称,TABLE_ID为你想自增的列名

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐