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为你想自增的列名