mysql中自增auto_increment功效的相干設置及成績。本站提示廣大學習愛好者:(mysql中自增auto_increment功效的相干設置及成績)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql中自增auto_increment功效的相干設置及成績正文
mysql中的自增auto_increment功效信任每位phper都用過,也都曉得若何設置字段為自增字段,但其實不是一切phper都曉得auto_increment的肇端值和遞增量是若何設置的!本文就為年夜家分享一下mysql字段自增功效的詳細檢查及設置辦法。
觸及常識引見:
mysql辦事器保護著2種mysql的體系參數(體系變量):全局變量(global variables)和會話變量(session variables)。它們的寄義與差別如其各占的稱號所示,session variables是在session級其余,對其的變革只會影響到本session;global variables是體系級其余,對其的變革會影響一切新session(變革時曾經存在session不受影響)至下次mysql server重啟動。留意它的變革影響不克不及跨重啟,要想再mysql server重啟時也應用新的值,那末就只要經由過程在敕令行指定變量選項或許更改組項文件來指定,而經由過程SET變革是達不到跨重啟的。
每個體系變量都有一個默許值,這個默許值是在編譯mysql體系的時刻肯定的。對體系變量的指定,普通可以在server啟動的時刻在敕令行指定選項或許經由過程選項文件來指定,固然,年夜部門的體系變量,可以在體系的運轉時,經由過程set敕令指定其值。
起首須要引見一下檢查mysql中全局變量的辦法:
show variables like '%xxx%'; <==> show session variables like '%xxx%'; //session會話變量
show global variables like '%xxx%'; //全局變量
例如檢查與auto_increment相干的變量辦法以下:
show variables like '%auto_increment%';
普通情形成果為:
variables_name
value
auto_increment_increment
1
auto_increment_offset
1
第一個變量名 auto_increment_increment 就是指 字段一次遞增若干;
第二個變量名 auto_increment_offset 指 自增字段的肇端值。
好比,有個表test,字段id為主鍵,自增;
假如auto_increment_offset=1 , 而且auto_increment_increment=1,那末向表中拔出第一條數據時,則該條數據的id=1,第二條id=2,第三條id=3以此類推……
假如auto_increment_offset=2 , 而且auto_increment_increment=10,那末向表中拔出第一條數據時,則該條數據的id=2,第二條id=12,第三條id=22以此類推……
留意:假如auto_increment_offset的值年夜於auto_increment_increment的值,則auto_increment_offset的值被疏忽。
懂得若何檢查及其寄義今後,剩下的就是若何修正這些變量的值了,修正也異常簡略,語句格局以下:
set auto_increment_increment=10
就這麼簡略就把變量auto_increment_increment的值設置成了10
—————————————————————————————————————
彌補一個看似簡略但又不是很簡略的成績:
問:假如有一張表,外面有個字段為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值將會喪失。