1. 程式人生 > >oracle怎麼增加自增列(我的兩種常用方法)

oracle怎麼增加自增列(我的兩種常用方法)

第一種在oracle資料庫中建立Sequences 和 Triggers(觸發器)兩個必須配合使用才可以生效。

舉例:Sequences 的建立,可以使用plsql工具新建。

-- Create sequence
create sequence CMU_SYSTEM_LOG_LOG_ID
minvalue 1
maxvalue 99999999999999999999
start with 261
increment by 1
cache 20;


Triggers的建立

CREATE OR REPLACE TRIGGER CMU_SYSTEM_LOG_LOG_ID
BEFORE INSERT ON CMU_SYSTEM_LOG
FOR EACH ROW
BEGIN
SELECT  CMU_SYSTEM_LOG_LOG_ID.Nextval INTO :new.LOG_ID FROM dual;
END;


第二種方法:當第一種方法不可行或者可能會提示許可權不足的時候,使用第二種方法。

第一步相同 先建立:Sequences

-- Create sequence
create sequence CMU_SYSTEM_LOG_LOG_ID
minvalue 1
maxvalue 99999999999999999999
start with 261
increment by 1
cache 20;


第二步:不建立觸發器了,在你準備插入資料的sql語句中增加CMU_SYSTEM_LOG_LOG_ID.Nextval  (增加的位置在你主鍵賦值的地方)

例如:(這個是Java的SSM框架Mapper.xml的語句,標紅的地方為增加的位置)

insert into CMU_SYSTEM_LOG
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="logId != null">
        LOG_ID,
      </if>
      <if test="userId != null">
        USER_ID,
      </if>
      <if test="username != null">
        USERNAME,
      </if>
      <if test="description != null">
        DESCRIPTION,
      </if>
      <if test="methods != null">
        METHODS,
      </if>
      <if test="logType != null">
        LOG_TYPE,
      </if>
      <if test="requestIp != null">
        REQUEST_IP,
      </if>
      <if test="exceptioncode != null">
        EXCEPTIONCODE,
      </if>
      <if test="exceptionDetail != null">
        EXCEPTION_DETAIL,
      </if>
      <if test="params != null">
        PARAMS,
      </if>
      <if test="time != null">
        TIME,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      CMU_SYSTEM_LOG_LOG_ID.Nextval,


      <if test="userId != null">
        #{userId,jdbcType=DECIMAL},
      </if>
      <if test="username != null">
        #{username,jdbcType=VARCHAR},
      </if>
      <if test="description != null">
        #{description,jdbcType=VARCHAR},
      </if>
      <if test="methods != null">
        #{methods,jdbcType=VARCHAR},
      </if>
      <if test="logType != null">
        #{logType,jdbcType=VARCHAR},
      </if>
      <if test="requestIp != null">
        #{requestIp,jdbcType=DECIMAL},
      </if>
      <if test="exceptioncode != null">
        #{exceptioncode,jdbcType=VARCHAR},
      </if>
      <if test="exceptionDetail != null">
        #{exceptionDetail,jdbcType=VARCHAR},
      </if>
      <if test="params != null">
        #{params,jdbcType=VARCHAR},
      </if>
      <if test="time != null">
        #{time,jdbcType=TIMESTAMP},
      </if>
    </trim>

之後就結束了。

本文編輯:美推網www.zdflshop.com(站長編輯)