程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> Mysql函數Last_insert_id()語法介紹

Mysql函數Last_insert_id()語法介紹

編輯:MySQL綜合教程

Mysql函數可以實現許多我們需要的功能,下面介紹的Mysql函數Last_insert_id()就是其中之一,希望對您學習Mysql函數能有所幫助。

自動返回最後一個INSERT或 UPDATE 查詢中 AUTO_INCREMENT列設置的第一個表發生的值。

  1. mysql> SELECT LAST_INSERT_ID();  
  2.         -> 195 

產生的ID 每次連接後保存在服務器中。這意味著函數向一個給定客戶端返回的值是該客戶端產生對影響AUTO_INCREMENT列的最新語句第一個AUTO_INCREMENT值的。這個值不能被其它客戶端影響,即它們產生它們自己的AUTO_INCREMENT值。這個行為保證了你能夠找回自己的 ID 而不用擔心受其它客戶端的影響力,而且不需要加鎖處理。

假如你使用一個非“magic”值來更新某一行的AUTO_INCREMENT 列,則LAST_INSERT_ID() 的值不會變化(換言之, 一個不是 NULL也不是 0的值)。

重點: 假如你使用一條INSERT語句插入多個行, LAST_INSERT_ID() 只返回插入的第一行數據時產生的值。其原因是這使依靠其它服務器復制同樣的 INSERT語句變得簡單。

例如:

  1. mysql> USE test;  
  2. Database changed  
  3. mysql> CREATE TABLE t (  
  4.     ->   id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,  
  5.     ->   name VARCHAR(10) NOT NULL  
  6.     -> );  
  7. Query OK, 0 rows affected (0.09 sec)  
  8.  
  9. mysql> INSERT INTO t VALUES (NULL, 'Bob');  
  10. Query OK, 1 row affected (0.01 sec)  
  11.  
  12. mysql> SELECT * FROM t;  
  13. +----+------+  
  14. | id | name |  
  15. +----+------+  
  16. | 1 | Bob |  
  17. +----+------+  
  18. 1 row in set (0.01 sec)  
  19.  
  20. mysql> SELECT LAST_INSERT_ID();  
  21. +------------------+  
  22. | LAST_INSERT_ID() |  
  23. +------------------+  
  24. |                1 |  
  25. +------------------+  
  26. 1 row in set (0.00 sec)  
  27.  
  28. mysql> INSERT INTO t VALUES  
  29.     -> (NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa');  
  30. Query OK, 3 rows affected (0.00 sec)  
  31. Records: 3 Duplicates: 0 Warnings: 0  
  32.  
  33. mysql> SELECT * FROM t;  
  34. +----+------+  
  35. | id | name |  
  36. +----+------+  
  37. | 1 | Bob |  
  38. | 2 | Mary |  
  39. | 3 | Jane |  
  40. | 4 | Lisa |  
  41. +----+------+  
  42. 4 rows in set (0.01 sec)  
  43.  
  44. mysql> SELECT LAST_INSERT_ID();//注意  
  45. +------------------+  
  46. | LAST_INSERT_ID() |  
  47. +------------------+  
  48. |                2 |  
  49. +------------------+  
  50. 1 row in set (0.00 sec)  
  51.  

雖然第二個問詢將3 個新行插入 t, 對這些行的第一行產生的 ID 為 2, 這也是 LAST_INSERT_ID() 返回的值

假如使用 INSERT IGNORE而記錄被忽略,則AUTO_INCREMENT 計數器不會增量,而 LAST_INSERT_ID() 返回0, 這反映出沒有插入任何記錄。
 

MySQL DATEDIFF()語法介紹

MySQL日期的相關函數介紹

帶您了解mysql CONCAT()函數

MySQL字符串分割並拼接語句介紹

修改mysql默認字符集的方法

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved