在數據庫分表或者程序自己需要唯一id的情況下,我們需要一個生成唯一id的方案。
可以編寫一個綜合時間和某些特征生成唯一id的程序,也可以考慮使用數據庫里自增id的特性來實現這個需求,下面舉個mysql的例子。
首先創建一個專門生成id的表,其中id字段是主鍵,replace_key字段為唯一鍵。
```sql
CREATE TABLE `ticket` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`replace_key` char(1) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `replace_key` (`replace_key`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=10001;
```
每次需要生成id時,利用replace into語句生成新的記錄將舊的記錄替換掉,然后返回此id即可。
```sql
REPLACE INTO `ticket` (`replace_key`) VALUES ('a');
SELECT LAST_INSERT_ID();
```
- 【mysql的編程專題①】流程控制與其他語法
- 【mysql的編程專題②】觸發器
- 【mysql的編程專題③】內置函數
- 【mysql的編程專題④】存儲過程
- 【mysql的編程專題⑤】自定義函數
- 【mysql的編程專題⑥】視圖
- 【mysql的設計與優化專題(1)】ER圖,數據建模與數據字典
- 【mysql的設計與優化專題(2)】數據中設計中的范式與反范式
- 【mysql的設計與優化專題(3)】字段類型與合理的選擇字段類型
- 【mysql的設計與優化專題(4)】表的垂直拆分和水平拆分
- 【mysql的設計與優化專題(5)】慢查詢詳解
- 【mysql的設計與優化專題(6)】mysql索引攻略
- 【Mysql問題集錦(1)】mysql不能使用innodb存儲引擎
- 【Mysql進階技巧(2)】利用mysql生成唯一序號
- 【Mysql進階技巧(1)】MySQL的多表關聯與自連接
- 【Mysql高可用架構(1)】基于日志點的主從復制
- 【Mysql高可用架構(2)】主從管理的系統視圖
- 【Mysql高可用架構(3)】基于GTID的主從復制
- 【Mysql高可用架構(4)】在線變更復制類型
- 【Mysql高可用架構(5)】多源復制(多主一從)
- 【Mysql高可用架構(6)】多線程復制
- 【Mysql高可用架構(7)】在線設置復制過濾
- 【Mysql高可用架構(8)】解決主從不一致
- 【Mysql高可用架構(9)】初識mycat以及制作mycat鏡像
- 【Mysql高可用架構(10)】mycat配置mysql讀寫分離
- MyCat 集群部署(HAProxy + MyCat)
- 常用復雜sql語句整理