為了在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...