mysql序列号生成软件_mysql 序列号生成器
如果你不想使用mysql的自動遞增,但又想實現主鍵序列號的功能,可以使用下面的方法,通過函數用一張表去維護生成多個表的序列號,簡單又實用
1.創建生成多個表的序列號的數據維護表
CREATE TABLE seq (
name varchar(20) NOT NULL,
val int(10) UNSIGNED NOT NULL,
PRIMARY KEY? (name)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8
2.插入幾條初始化數據
INSERT INTO seq VALUES('one',100);
INSERT INTO seq VALUES('two',1000);
3.創建函數以生成序列號
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
論壇回復 / 瀏覽 (6 / 8069)
分類:數據庫
評論
6 樓
pekkle
2009-12-30
說白了,就是用一張表來記錄,沒意思。并發就死了
5 樓
coolzhi
2009-11-09
nuthell 寫道
可否深入詳細的講解一下,如何運用?可以應用在什么地方。
謝謝
本人主要是應用于數據插入時自動生成一個短標識,這樣生成靜態html或者做偽靜態的時候的鏈接比較容易讓搜索引擎或者人記住,沒有考慮到并發性能問題
4 樓
方世玉
2009-11-09
每次是update加1,性能很差,大批量的情況下會有問題的
相比之下,oracle是可以提前鎖定一批序列號,存放在內存里面的。
3 樓
xiaoych
2009-11-09
性能會比較差吧……
2 樓
hardPass
2009-11-09
這種東西,其實沒有什么意義。
可以由應用程序來生成有序的id,方便操作,更方便取剛插入的ID,而不需要考慮并發等問題。
如果用一個服務做這個工作,還方便集群。
1 樓
nuthell
2009-11-09
可否深入詳細的講解一下,如何運用?可以應用在什么地方。
謝謝
總結
以上是生活随笔為你收集整理的mysql序列号生成软件_mysql 序列号生成器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ts视频下载 准备下载视频的你确定不进来
- 下一篇: 攻防世界——MyDriver2-397