oracle mysql的序列的新增、刪除、修改及使用

序列的使用

1.序列介紹

序列: 是 oracle 提供的用於產生一系列惟一數字的數據庫對象。
Oracle 序列(Sequence)主要用於生成流水號,在應用中常常會用到,特別是做爲ID值,拿來作表主鍵。
經過建立Oracle序列和觸發器實現表的主鍵自增。
序列的用途通常用來填充主鍵和計數。

2.修改序列初始值

有時候須要修改序列初始值,有如下幾種方法:數據庫

方法一:
    (1)刪除序列;  (2)從新建立; 這個方法比較簡單粗暴。
drop sequence  sequence_name;
 
create sequence   sequence_name
minvalue 1                                                             //最小值
maxvalue 999999999999999999999999999  //最大值
start with  10                                                         //初始值
increment by 1                                                     //步長
cache 20;                                                               //序列號緩存
 
方法二:
經過Increment By來實現修改初始值。
例如:若序列名稱是seq_name,初始值是15,而如今要設置初始值爲1015,Increment By值爲:1000(1013-13)
1) 執行:alter sequence seq_name increment by 1000;
2) 執行:select seq_name .nextval from dual;
3) 執行:alter sequence seq_name increment by 1;
修改完成。
 

CREATE SEQUENCE [ schema. ]sequence
[ { INCREMENT BY | START WITH } integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
];緩存


ALTER SEQUENCE [ schema. ]sequence
{ INCREMENT BY integer
| { MAXVALUE integer | NOMAXVALUE }
| { MINVALUE integer | NOMINVALUE }
| { CYCLE | NOCYCLE }
| { CACHE integer | NOCACHE }
| { ORDER | NOORDER }
};oracle

1)結論一:在初建立的Sequence上第一次使用nextval的時候,獲得是初始值,不是初始值加一!
2)結論二:第一次NEXTVAL初始化以後才能使用CURRVAL取值;
3)結論三:能夠在一條SQL語句中同時獲得nextval和currval值;
4)結論四:從上面的alter sequence的語法看,能夠獲得這樣一個結論,沒法使用alter語句修改序列的當前值。
 
使用(在插入語句中使用)

<insert id="insert" parameterType="com.test.domain.Student"
useGeneratedKeys="true" keyProperty="Id">
<selectKey resultType="int" order="BEFORE" keyProperty="Id">
select SEQ_STUDENT_ID.nextval from dual
</selectKey>
insert into student
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id!= null">
ID,
</if>
<if test="name!= null">
NAME,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="name != null">
#{name,jdbcType=INTEGER},
</if>
</trim>
</insert>dom

相關文章
相關標籤/搜索