關於mysql自增id的獲取和重置

2021-08-06 00:18:21 字數 1370 閱讀 4480

使用max函式:select max(id) from tablename

優點:使用方便快捷。

缺點:獲取的不是真正的自增id,是表中最大的id,如果有刪除資料的話,那麼該值和自增id相差比較大。如果有連表資料,有可能導致資料錯亂。

使用last_insert_id函式:select last_insert_id()

優點:獲取到的是真正的自增id。

缺點:該函式是與table無關的,永遠保留最新插入的自增列的id。如果多客戶端操作,而且不能保證原子性,這個值可能會出現錯誤。所以需要在插入之後呼叫。

使用@@identity變數:select @@identity

此方法和last_insert_id()功能差不多,優缺點也一致。需要在插入後呼叫。

使用mysql查詢函式:show table status;

優點:能夠準確的查到自增id。而且可以在語句後面加上where語句或者like語句來過濾。

缺點:該語句返回的是乙個記錄集,不能單獨的返回自增值。所以需要額外的操作來獲取。

所以我們參考 show table status來構建查詢語句。如:

select auto_increment into autoid from information_schema.tables where table_schema = 『dbname』 and table_name = 『tablename』;

優點:高度自定義,能夠準確的得到想得到的任何資訊。

確定:不容易記住。呵呵。

使用truncate:truncate table;

說明:使用truncate會刪除表的資料釋放空間,並且重置字自增id,但不會刪除表的定義。

用處:需要清空表的時候才能使用。

使用修改標識:dbcc checkident (『table_name』 , reseed, new_reseed_value) ;

說明:new_reseed_value是設定的當前標識,下次插入則從new_reseed_value+1開始。如果new_reseed_value小於表中當前標識的值,有可能會產生重複key,會產生 2627 號錯誤資訊。

用處:此方法不會清空已有資料。適用於大量刪除後修改新的標識,但不能比當前表中最大值小。

使用修改表的方法:alter table tablename auto_increment=1

說明:此方法和上面的二方法類似。也不會清空資料,有可能會出現重複key的可能,所以此方法也只適用於清空表之後重置自增id或者大量刪除後修改自增id。

MySQL 自增ID值 獲取的方法

如何獲取 mysql中某個表的自增id欄位的下乙個值 方法一 例如 在zx ofc.task order表中task id是自增欄位。它的下乙個自增字段可以通過下面的語句獲得 select auto increment from information schema.tables where tab...

mysql 實現id自增序列 mysql自增id列

如果希望在每次插入新記錄時,自動地建立主鍵欄位的值。可以在表中建立乙個 auto increment 字段。mysql 使用 auto increment 關鍵字來執行 auto increment 任務。預設地auto increment 的開始值是 1,每條新記錄遞增 1。主鍵又稱主關鍵字,主關...

關於自增ID的弊端

如果現在公司的資料庫 old db table1 有以下記錄 1 a2 b 3 c4 d 以上 1 4 是公司自用資料 a使用者新增一條記錄 e 即5 e 現在新的資料庫公司的new db table1 的資料要更新 1 a2 b 3 c4 d 5 l6 m 以上 1 6 是公司自用資料 那麼使用者...