實現方法應該有很多
這裡我分享兩種利用mysql的innodb的事務特性來實現的方案
先介紹第一種
復制代碼 代碼如下:
CREATE TABLE auto_id(
idname varchar(
id bigint(
primary key(idname)
)ENGINE=Innodb DEFAULT CHARSET=utf
接下來是一個存儲過程
復制代碼 代碼如下:
delimiter //
drop procedure if exists get_increment_id;
create procedure get_increment_id(in idname_in varchar(
begin
declare oldid bigint;
start transaction;
select id into oldid from maibo_auto_id where idname=idname_in for update;
if oldid is NULL then
insert into maibo_auto_id(idname
set id_out=small_in;
else
update maibo_auto_id set id=id+
set id_out=oldid+
end if;
commit;
end;
//
重點是這句
如果你的前端是用php實現的
只需執行如下兩個sql
復制代碼 代碼如下:
$sql =
$ret = $db
還有另外一種方法
先創建一張表
復制代碼 代碼如下:
create table test(
`id` int(
primary key (id)
)ENGINE=MyISAM AUTO_INCREMENT=
通過如下兩條sql
復制代碼 代碼如下:
UPDATE test SET id = LAST_INSERT_ID(id +
SELECT LAST_INSERT_ID();
也能解決問題
這樣可能每個ID都得弄一張表來維護
具體使用中如何處理
From:http://tw.wingwit.com/Article/program/MySQL/201405/30865.html