mysql序列号生成软件_mysql 序列号生成器
如果你不想使用mysql的自動(dòng)遞增,但又想實(shí)現(xiàn)主鍵序列號的功能,可以使用下面的方法,通過函數(shù)用一張表去維護(hù)生成多個(gè)表的序列號,簡單又實(shí)用
1.創(chuàng)建生成多個(gè)表的序列號的數(shù)據(jù)維護(hù)表
CREATE TABLE seq (
name varchar(20) NOT NULL,
val int(10) UNSIGNED NOT NULL,
PRIMARY KEY? (name)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8
2.插入幾條初始化數(shù)據(jù)
INSERT INTO seq VALUES('one',100);
INSERT INTO seq VALUES('two',1000);
3.創(chuàng)建函數(shù)以生成序列號
CREATE FUNCTION seq(seq_name char (20)) returns int
begin
UPDATE seq SET val=last_insert_id(val+1) WHERE name=seq_name;
RETURN last_insert_id();
end
4.測試
mysql> SELECT seq('one'),seq('two'),seq('one'),seq('one');
+------------+------------+------------+------------+
| seq('one') | seq('two') | seq('one') | seq('one') |
+------------+------------+------------+------------+
|? ? ? ? 102 |? ? ? ?1002 |? ? ? ? 103 |? ? ? ? 104 |
+------------+------------+------------+------------+
1 row IN SET (0.00 sec)
分享到:
2009-10-21 22:58
瀏覽 2834
論壇回復(fù) / 瀏覽 (6 / 8069)
分類:數(shù)據(jù)庫
評論
6 樓
pekkle
2009-12-30
說白了,就是用一張表來記錄,沒意思。并發(fā)就死了
5 樓
coolzhi
2009-11-09
nuthell 寫道
可否深入詳細(xì)的講解一下,如何運(yùn)用?可以應(yīng)用在什么地方。
謝謝
本人主要是應(yīng)用于數(shù)據(jù)插入時(shí)自動(dòng)生成一個(gè)短標(biāo)識,這樣生成靜態(tài)html或者做偽靜態(tài)的時(shí)候的鏈接比較容易讓搜索引擎或者人記住,沒有考慮到并發(fā)性能問題
4 樓
方世玉
2009-11-09
每次是update加1,性能很差,大批量的情況下會(huì)有問題的
相比之下,oracle是可以提前鎖定一批序列號,存放在內(nèi)存里面的。
3 樓
xiaoych
2009-11-09
性能會(huì)比較差吧……
2 樓
hardPass
2009-11-09
這種東西,其實(shí)沒有什么意義。
可以由應(yīng)用程序來生成有序的id,方便操作,更方便取剛插入的ID,而不需要考慮并發(fā)等問題。
如果用一個(gè)服務(wù)做這個(gè)工作,還方便集群。
1 樓
nuthell
2009-11-09
可否深入詳細(xì)的講解一下,如何運(yùn)用?可以應(yīng)用在什么地方。
謝謝
總結(jié)
以上是生活随笔為你收集整理的mysql序列号生成软件_mysql 序列号生成器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ts视频下载 准备下载视频的你确定不进来
- 下一篇: SQL Server 2019 安装教程