程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL中獲得得最初一筆記錄的語句

MYSQL中獲得得最初一筆記錄的語句

編輯:MySQL綜合教程

MYSQL中獲得得最初一筆記錄的語句。本站提示廣大學習愛好者:(MYSQL中獲得得最初一筆記錄的語句)文章只能為提供參考,不一定能成為您想要的結果。以下是MYSQL中獲得得最初一筆記錄的語句正文


在MySQL中,應用auto_increment類型的id字段作為表的主鍵,並用它作為其他表的外鍵,構成“主從表構造”,這是數據庫設計中罕見的用法。然則在詳細生成id的時刻,我們的操作次序普通是:先在主表中拔出記載,然後取得主動生成的id,以它為基本拔出從表的記載。這外面有個艱苦,就是拔出主表記載後,若何取得它對應的id。平日的做法,是經由過程“select max(id) from tablename”的做法,然則明顯這類做法須要斟酌並發的情形,須要在事務中對主表加以“X鎖“,待取得max(id)的值今後,再解鎖。這類做法須要的步調比擬多,有些費事,並且並發性也欠好。有無更簡略的做法呢?謎底之一是經由過程select LAST_INSERT_ID()這個操作。乍一看,它和select max(id)很象,但現實上它是線程平安的。也就是說它是詳細於數據庫銜接的。上面經由過程試驗解釋:

1、在銜接1中向A表拔出一筆記錄,A表包括一個auto_increment類型的字段。

2、在銜接2中向A表再拔出一筆記錄。

3、成果:在銜接1中履行select LAST_INSERT_ID()獲得的成果和銜接2中履行select LAST_INSERT_ID()的成果是分歧的;而在兩個銜接中履行select max(id)的成果是雷同的。
       其其實MSSQL中SCOPE_IDENTITY()和IDENT_CURRENT()的差別和這裡是相似的。應用SCOPE_IDENTITY()可以取得拔出某個IDENTITY字段確當前會話的值,而應用IDENT_CURRENT()會取得在某個IDENTITY字段上拔出的最年夜值,而不辨別分歧的會話。

注:應用select last_insert_id()時要留意,當一次拔出多筆記錄時,只是取得第一次拔出的id值,務必留意!可以嘗嘗

insert into tb(c1,c2) values (c1value,c2value),(c1value1,c2value2)..。

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