1、沒谷歌到php可以用的直接方法,不過可以獲取批量插入的第一個自增id
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了固原免費建站歡迎大家使用!
2、假設(shè)批量插入的數(shù)據(jù)的自增ID是連續(xù)的,則可以通過第一個自增ID獲取所有自增ID
3、測試批量插入的數(shù)據(jù)的自增ID是否是連續(xù)的,即插入過程中,單獨插入其他數(shù)據(jù),批量插入的自增ID是否連續(xù)
4、生成批量插入10w條數(shù)據(jù)的sql
5、navicat打開兩個頁面,一個是上面的sql,一個是一條單獨插入的sql(這條sql的test_id,要大于上面sql里隨機數(shù)的最大值,方便查看)
6、所以可以使用2中的方式獲取批量插入的所有自增ID
在MySQL中,使用auto_increment類型的id字段作為表的主鍵,并用它作為其他表的外鍵,形成“主從表結(jié)構(gòu)”,這是數(shù)據(jù)庫設(shè)計中常見的用法。但是在具體生成id的時候,我們的操作順序一般是:先在主表中插入記錄,然后獲得自動生成的id,以它為基礎(chǔ)插入從表的記錄。這里面有個困難,就是插入主表記錄后,如何獲得它對應(yīng)的id。通常的做法,是通過“select max(id) from tablename”的做法,但是顯然這種做法需要考慮并發(fā)的情況,需要在事務(wù)中對主表加以“X鎖“,待獲得max(id)的值以后,再解鎖。這種做法需要的步驟比較多,有些麻煩,而且并發(fā)性也不好。有沒有更簡單的做法呢?答案之一是通過select LAST_INSERT_ID()這個操作。乍一看,它和select max(id)很象,但實際上它是線程安全的。也就是說它是具體于數(shù)據(jù)庫連接的。下面通過實驗說明:
1、在連接1中向A表插入一條記錄,A表包含一個auto_increment類型的字段。
2、在連接2中向A表再插入一條記錄。
3、結(jié)果:在連接1中執(zhí)行select LAST_INSERT_ID()得到的結(jié)果和連接2中執(zhí)行select LAST_INSERT_ID()的結(jié)果是不同的;而在兩個連接中執(zhí)行select max(id)的結(jié)果是相同的。
其實在MSSQL中SCOPE_IDENTITY()和IDENT_CURRENT()的區(qū)別和這里是類似的。使用SCOPE_IDENTITY()可以獲得插入某個IDENTITY字段的當(dāng)前會話的值,而使用IDENT_CURRENT()會獲得在某個IDENTITY字段上插入的最大值,而不區(qū)分不同的會話。
注:使用select last_insert_id()時要注意,當(dāng)一次插入多條記錄時,只是獲得第一次插入的id值,務(wù)必注意!可以試試
insert into tb(c1,c2) values (c1value,c2value),(c1value1,c2value2)..。
通過 database.insert_id() 方法可以獲取插入數(shù)據(jù)的主鍵id, 注意一定要在commit之前獲取,否則返回0。
因為MySQL本身支持auto_increment操作,很自然地,我們會想到借助這個特性來實現(xiàn)這個功能。Flicker在解決全局ID生成方 案里就采用了MySQL自增長ID的機制(auto_increment + replace into + MyISAM)。一個生成64位ID方案具體就是這樣的:
先創(chuàng)建單獨的數(shù)據(jù)庫(eg:ticket),然后創(chuàng)建一個表:
CREATE TABLE Tickets64 (
id bigint(20) unsigned NOT NULL auto_increment,
stub char(1) NOT NULL default '',
PRIMARY KEY (id),
UNIQUE KEY stub (stub)
) ENGINE=MyISAM
當(dāng)前名稱:mysql怎么取得id mysql怎么用
文章分享:http://www.rwnh.cn/article42/doohjhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、微信小程序、靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)