mysql 自增步長設定

2021-08-10 11:06:16 字數 939 閱讀 2078

設定自增列的步長,可以分為全域性級別和會話級別,如果是會話級別,那麼當使用者新建乙個會話的時候,那麼步長又回到了全域性級別,所以mysql的步長跟sqlserver的步長有很大的不同,mysql不能設定為表級別的步長!!

mysql伺服器維護著2種mysql的系統引數(系統變數):全域性變數(global variables)和會話變數(sessionvariables)。它們的含義與區別如其各佔的名稱所示,sessionvariables是在session級別的,對其的變更只會影響到本session;global variables是系統級別的,對其的變更會影響所有新session(變更時已經存在session不受影響)至下次mysql server重啟動。

注意:它的變更影響不能跨重啟,要想再mysql server重啟時也使用新的值,那麼就只有通過在命令列指定變數選項或者更改選項檔案來指定,而通過set變更是達不到跨重啟的。 每乙個系統變數都有乙個預設值,這個預設值是在編譯mysql系統的時候確定的。對系統變數的指定,一般可以在server啟動的時候在命令列指定選項或者通過選項檔案來指定。當然,大部分的系統變數,可以在系統的執行時,通過set命令指定其值。 

檢視系統當前預設的自增列種子值和步長值:

show global variables like 'auto_incre%'; -- 全域性變數

如果有一張表,裡面有個字段為id的自增主鍵,當已經向表裡面插入了10條資料之後,刪除了id為8,9,10的資料,再把mysql重啟,之後再插入一條資料,那麼這條資料的id值應該是多少,是8,還是11? 

如果表的型別為myisam,那麼是11。如果表的型別為innodb,則id為8。 這是因為兩種型別的儲存引擎所儲存的最大id記錄的方式不同,myisam表將最大的id記錄到了資料檔案裡,重啟mysql自增主鍵的最大id值也不會丟失; 而innodb則是把最大的id值記錄到了記憶體中,所以重啟mysql或者對錶進行了optimize操作後,最大id值將會丟失。 

MySQL設定自增字段

1 mysql每張表只能有1個自增欄位,這個自增字段即可作為主鍵,也可用作非主鍵使用,但是請注意將自增欄位當做非主鍵使用時必須為其新增唯一索引,否則系統將會報錯 1 將自動增長字段設定為主鍵 create table t1 id int auto increment primary key,sid ...

mysql qt自增 mysql自增設置

alter table album change album id album id bigint not null auto increment alter table album auto increment 1 建立 mysql create table cc id int auto incr...

MySQL設定主鍵自增和非主鍵自增

mysql 每張表只能有1個自動增長字段,這個自動增長字段即可作為主鍵,也可以用作非主鍵使用,但是請注意將自動增長字段當做非主鍵使用時必須必須為其新增唯一索引,否則系統將會報錯。例如 將自動增長字段設定為主鍵 create table t1 id int auto increment primary...