国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - 使用MySQL的LAST_INSERT_ID來確定各分表的唯一ID值

使用MySQL的LAST_INSERT_ID來確定各分表的唯一ID值

2019-11-23 18:53MYSQL教程網 Mysql

MySQL數據表結構中,一般情況下,都會定義一個具有‘AUTO_INCREMENT’擴展屬性的‘ID’字段,以確保數據表的每一條記錄都可以用這個ID唯一確定

分表除了表名的索引不同之外,表結構都是一樣的,如果各表的‘ID'字段仍采用‘AUTO_INCREMENT'的方式的話,ID就不能唯確定一條記錄了。 
這時就需要一種處于各個分表之外的機制來生成ID,我們一般采用一張單獨的數據表(不妨假設表名為‘ticket_mutex')來保存這個ID,無論哪個分表有數據增加時,都是先到ticket_mutex表把ID值加1,然后取得ID值。 
這個取ID的操作看似很復雜,所幸的是,MySQL提供了LAST_INSERT_ID機制,讓我們能一步完成。 
1、新建數據表ticket_mutex 

復制代碼代碼如下:


CREATE TABLE ticket_mutex ( 
name varchar(32) NOT NULL PRIMARY KEY COMMENT '業務名稱', 
value bigint(20) UNSIGNED NOT NULL COMMENT 'ID值' 
)Engine=InnoDB DEFAULT CHARSET=UTF8 COMMENT '保存分表ID表'; 


字段‘name'用來說明這個ID是哪個業務的,比如‘用戶'的ID,我們可以定為‘USER'; 
字段‘value'即該業務的ID值。 
2、初始化業務和其ID值 

復制代碼代碼如下:


INSERT INTO ticket_mutex(name, value) values('USER', 0),('POST', 0); 
+------+-------+ 
| name | value | 
+------+-------+ 
| POST | 0 | 
| USER | 0 | 
+------+-------+ 


我們初始化了2條記錄,即有2個不同的業務,分別代表‘用戶信息'和‘主題信息',它們初始ID值均為‘0'; 
3、獲取分表唯一ID 
這個時候就要利用MySQL提供的LAST_INSERT_ID()機制了。 
在往用戶表里新增一條數據時,獲取‘用戶ID': 

復制代碼代碼如下:


UPDATE ticket_mutex SET value=LAST_INSERT_ID(value+1) WHERE name='USER';SELECT LAST_INSERT_ID(); 
+------------------+ 
| LAST_INSERT_ID() | 
+------------------+ 
| 1 | 
+------------------+ 


通過這條語句之后,我們得到結果為1,這個值就是我們所需要的值。再來查看數據記錄,我們發現記錄總數沒有改變,但是‘用戶'的ID已經為1了; 

復制代碼代碼如下:


+------+-------+ 
| name | value | 
+------+-------+ 
| POST | 0 | 
| USER | 1 | 
+------+-------+ 


查看所有的記錄: 

復制代碼代碼如下:


+------+-------+ 
| name | value | 
+------+-------+ 
| POST | 1 | 
| USER | 1 | 
+------+-------+ 


從上可以看出,通過MySQL的LAST_INSERT_ID機制,我們可以保證在記錄總數不增長的情況下,讓業務ID在不斷的增加,從而保證了分表ID的唯一性。 
4、LAST_INSERT_ID說明 
從名字可以看出,LAST_INSERT_ID即為最后插入的ID值,根據MySQL的官方手冊說明,它有2種使用方法 
一是不帶參數:LAST_INSERT_ID(),這種方法和AUTO_INCREMENT屬性一起使用,當往帶有‘AUTO_INCREMENT'屬性字段的表中新增記錄時,LAST_INSERT_ID()即返回該字段的值,大家可試下(我已經驗證過); 
二是帶有表達式:如上面介紹的LAST_INSERT_ID(value+1),它返回的是表達式的值,即‘value+1';

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美成人综合 | 欧美xo影院 | 黄网站在线观看 | 精品精品 | 青青伊人久久 | 久久99精品国产.久久久久 | 久久精品国产一区 | 一区二区三区视频在线观看 | 欧美日韩精品一区二区三区蜜桃 | 一区二区三区在线看 | 亚洲精品一区二区三区在线 | 亚洲欧美国产日韩综合 | 国产精品99久久久久久www | 欧美中文字幕一区二区三区亚洲 | www.久| 亚洲射情 | 亚洲国产日韩欧美 | 一本大道香蕉大a√在线 | 黄色片视频免费在线观看 | 久久久久久久久久久久久久av | 久久999| 99精品免费视频 | 日韩福利视频 | 在线观看中文字幕 | 一区二区不卡视频 | 九色影院 | 四虎最新网站 | 久久久久久免费精品 | 欧美精品99 | 求av网址 | 免费人成黄页网站在线一区二区 | 国产精品久久久久久久久久久久冷 | av一区二区三区 | 久草精品在线 | 国产www视频 | 日韩午夜一级片 | 亚洲激情综合在线 | 中文字幕免费中文 | 国产视频中文字幕 | 欧美国产一区二区三区 | 色偷偷888欧美精品久久久 |