autotest表是測試表(mysql版本為5.7),結構如下
1.insert into指定自增主鍵的值時,自增主鍵會變嗎?
以下是表中資料的初始值
接著插入自增主鍵9
如果insert指定自增主鍵的值不會導致auto_increment值的變化的話,那麼接著不指定自增主鍵的值執行insert語句時,就會插入一條id=8的記錄,測試結果如下:
可見指定主鍵執行insert語句時會導致auto_increment的值變化
2.當指定自增主鍵的值插入資料時,下乙個auto_increment等於多少?
上面1測試的是,auto_increment_increment的值等於1的情況,這時候,下乙個auto_increment的值會等於插入的固定主鍵值加1
那麼當auto_increment_increment的值大於1的時候還會是這種情況嗎,看下面的測試圖。auto_increment的初始值為21,當插入乙個比他大的值23時,下乙個auto_increment的值就變為28了,所以當指定自增主鍵的值插入資料時,下乙個auto_increment的值會等於插入的固定自增主鍵的值加auto_increment_increment
初始的auto_increment的值
三、重啟對auto_increment的影響
重啟前:
重啟後:
可見重啟後auto_increment的值設為當前id的最大值加1(並不受auto_increment_increment的影響),這是因為auto_increment的值重啟後就丟失了,8.0會固化auto_increment的值,這樣重啟前後auto_increment的值就不會有變化了
mysql 主鍵自增語句 MySQL 自增主鍵
以下僅考慮 innodb 儲存引擎。自增主鍵有兩個性質需要考慮 單調性每次插入一條資料,其 id 都是比上一條插入的資料的 id 大,就算上一條資料被刪除。連續性插入成功時,其資料的 id 和前一次插入成功時資料的 id 相鄰。自增主鍵的單調性 為何會有單調性的問題?這主要跟自增主鍵最大值的獲取方式...
MySQL設定主鍵自增和非主鍵自增
mysql 每張表只能有1個自動增長字段,這個自動增長字段即可作為主鍵,也可以用作非主鍵使用,但是請注意將自動增長字段當做非主鍵使用時必須必須為其新增唯一索引,否則系統將會報錯。例如 將自動增長字段設定為主鍵 create table t1 id int auto increment primary...
mybatis返回MySQL自增主鍵
獲取mysql的自增主鍵有以下兩種方式 方式一,使用 usegeneratedkeys keyproperty 屬性 insert parametertype person usegeneratedkeys true keyproperty id insert into person name,ps...