久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

mysql last_insert_id

 chilung 2010-09-18

在一個(gè)事物當(dāng)中包含了多張表的級(jí)聯(lián)更新;

第一張需要更新的表是主表,,其他從表和其相關(guān),因此需要主表的主鍵,,那么如何在mysql當(dāng)中實(shí)現(xiàn)呢,?

mysql有l(wèi)ast_insert_id()這個(gè)函數(shù)

 

它的用法如下:記錄下來備忘

 

它必需緊跟在insert 語句執(zhí)行之后。

 

//執(zhí)行insert語句先

 

$sql="insert into table (name1,name2,...) values('value1','values'...)";

 

 dbx_query($db_link,$sql);

 

//找出最后一次插入記錄的id

 

$select="select last_insert_id() ";

 

 $result=dbx_query($db_link,$select);

 

$last_id=$result->data[0][0];

 

 

ps: $last_id=mysql_insert_id();

 

mysql_insert_id() 將 MySQL 內(nèi)部的 C API 函數(shù) mysql_insert_id() 的返回值轉(zhuǎn)換成 long(PHP 中命名為 int),。如果 AUTO_INCREMENT 的列的類型是 BIGINT,,則 mysql_insert_id() 返回的值將不正確??梢栽?SQL 查詢中用 MySQL 內(nèi)部的 SQL 函數(shù) LAST_INSERT_ID() 來替代,。 

 

 

LAST_INSERT_ID

自動(dòng)返回最后一個(gè) INSERT 或 UPDATE 操作為 AUTO_INCREMENT 列設(shè)置的第一個(gè)發(fā)生的值. 參考這里 

The ID that was generated is maintained in the server on a per-connection basis.

LAST_INSERT_ID是基于單個(gè)connection的, 不可能被其它的客戶端連接改變,。

 可以用 SELECT LAST_INSERT_ID(); 查詢LAST_INSERT_ID的值.

Important: If you insert multiple rows using a single INSERT statement, LAST_INSERT_ID() returns the value generated for the first inserted row only.

使用單INSERT語句插入多條記錄,  LAST_INSERT_ID只返回插入的第一條記錄產(chǎn)生的值. 比如

mysql> INSERT INTO t VALUES (NULL, 'aaaa'), (NULL, 'bbbb'), (NULL, 'cccc');   

mysql> SELECT * FROM t;   

+----+------+   

| id | name |   

+----+------+   

|  1 | Bob  |   

|  2 | aaaa |   

|  3 | bbbb |   

|  4 | cccc |   

+----+------+   

mysql> SELECT LAST_INSERT_ID();   

+------------------+   

| LAST_INSERT_ID() |   

+------------------+   

|                2 |   

+------------------+  

ID 2 是在插入第一條記錄aaaa 時(shí)產(chǎn)生的.

LAST_INSERT_ID 是與table無關(guān)的,,如果向表a插入數(shù)據(jù)后,再向表b插入數(shù)據(jù),,LAST_INSERT_ID會(huì)改變,。

一般情況下獲取剛插入的數(shù)據(jù)的id,使用select max(id) from table 是可以的,。

但在多線程情況下,,就不行了。在多用戶交替插入數(shù)據(jù)的情況下max(id)顯然不能用,。

這就該使用LAST_INSERT_ID了,,因?yàn)長(zhǎng)AST_INSERT_ID是基于Connection的,只要每個(gè)線程都使用獨(dú)立的Connection對(duì)象,,LAST_INSERT_ID函數(shù)將返回該Connection對(duì)AUTO_INCREMENT列最新的insert or update操作生成的第一個(gè)record的ID,。這個(gè)值不能被其它客戶端(Connection)影響,保證了你能夠找回自己的 ID 而不用擔(dān)心其它客戶端的活動(dòng),,而且不需要加鎖,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多