在mysql中模擬oracle的sequence

2021-05-22 18:53:27 字數 551 閱讀 7013

為了在mysql中實現類似於oracle的sequence的功能,要進行以下步驟:

1、建立乙個只有乙個資料行的資料表:

create table t_sequence (id int unsigned not null);

insert into t_sequence values (0);

2、用以下操作檢索出序列號:

update t_sequence set id = last_insert_id( id + 1 );

select last_insert_id(); 

注意此處無需帶表名,直接select這個函式即可。

通過修改id+1中的常數值,可生成不同步長的序列。如id+n可生成步長為n的序列。

通過last_insert_id()函式獲得的返回值模擬oracle中select nextval類似的效果。該方法的優點是不用事務或lock,unlock表就可生成唯一的序列編號。

因為last_insert_id()是面向連線的,每個連線的使用者取到的返回值不會重複,針對併發的連線該方法也是安全的。

在Oracle中模擬ms Sql 中的自動增加字段

在oracle中模擬ms sql 中的自動增加字段 方法原理 建立乙個與表字段對應的序列,再建立乙個插入前的觸發器,使在插入前得到乙個序列值,實現欄位的自動增長列,不需手工干預。建立的觸發器如下 create or replace trigger 觸發器名 before insert on 表名 f...

Oracle中的decode在mysql中實現

oracle中的decode函式轉換成mysql中的語法 題目 原本的資料格式 轉換成如下格式 sum decode level,好 1 0 good,sum decode level,中 1 0 middle,sum decode level,壞 1 0 bad from student grou...

MySQL模擬Oracle序列sequence

沒發現,這麼多同學有這個需求,把文件補充一下,其實就是建立1個表,和2個儲存過程。利用表的行級鎖模擬每乙個表的序列增減。drop table if exists sys sequence create table sys sequence seq name varchar 50 not null,c...