Oracle 使用 触发器 实现自增长ID(oracle自增长id)

创建触发器SQL语句


-- Create sequence
CREATE sequence SEQ_TABLE_NAME 
minvalue 1 
maxvalue 999999999 
START WITH 11 
INCREMENT BY 1 
cache 20;

CREATE OR REPLACE TRIGGER "TBALE_NAME_TRIGGER" BEFORE 
INSERT ON "TBALE_NAME" REFERENCING OLD AS "OLD" 
NEW AS "NEW" FOR EACH ROW DECLARE NEXTID NUMBER;   -- NUMBER 为类型 (根据具体需求进行修改)

BEGIN
	IF
		: NEW.TABLE_ID IS NULL OR : NEW.TABLE_ID = 0 THEN
		SELECT SEQ_TABLE_NAME.NEXTVAL INTO NEXTID FROM DUAL;
		: NEW.TABLE_ID := NEXTID;
	END IF;
END;

触发器名:SEQ_TABLE_NAME
表名:TABLE_NAME
主键:TABLE_ID

MyBatis 的 SQL 语句

<insert id="save" parameterType="**.**.**.TableName">
    INSERT INTO TAVLE_NAME (TABLE_ID, NAME, SEX, REMARK)
    VALUES (SEQ_TABLE_NAME.nextval, #{name,jdbcType=DECIMAL}, #{sex,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR})
</insert>
posted @ 2023-10-18 16:44  笔兴洽谈室  阅读(147)  评论(0编辑  收藏  举报