共計 993 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 MySQL 中主鍵為 0 與主鍵自排約束有什么關系,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
開始不設置主鍵表的設計如下:
如果 id 的位置有好幾個 0 的話:設置主鍵并且自動排序時,0 會從 1 開始遞增;
Insert 進去 id = 0 的數據,數據會從實際的行數開始增加,和從 0 變化不一樣;
現在主鍵是沒有 0 的,如果把某個 id 改成 0 的話,0 不會變!直接會進行排序;
再 insert 一個 id= 0 的看看,居然還是跟剛才一樣直接跟行數相關!
再重置一下自動排序,看看這個 0 會不會有變化,先取消自排;
再加上自排,果然跟想的一樣,0 要變成 1 了,錯誤提示說的是主鍵有重復的 1 所以不讓自排,
修改之后,果真可以了,0 變成 1 了,
小結
我覺得也就這幾種情況吧,無符號的情況應該沒什么區別,還有什么沒有考慮的希望大家給我留言,可以告訴我你是怎么想的,我也很想知道,現在拋磚引玉我把我的總結和想法寫一下:
對我來說,0 在數據庫里很特殊。
使用 limit 查看指定范圍數據的時候這時候表就會是從 0 開始往下排的順序,但是 insert 添加一行數據的時候反而是跟行數有關系,這時候又是按照從 1 開始往下排的順序。如果使用主鍵自排約束以前表里有 0,再設置完主鍵自排以后所有的 0 又不會根據行數,而是直接按照自上而下的順序從 1 開始排。如果把表中的某個主鍵的數改成 0,那直接就會進行排序放到正數前面,也就是說主鍵自排是允許有 0 存在的,那為什么本身存在的 0 要去修改成從 1 開始的遞增序列呢?哪怕沒加主鍵自排以前只有一個 0,加了主鍵自排以后還是會變成 1。
開始有 0,增加主鍵自排約束,0 依次變為 1,2,3,4…….
開始沒 0,增加主鍵自排約束,新添加的主鍵是 0 的行會根據行數自行變化,注意這里是新添加的行,使用的是 insert。
開始沒 0,把某個主鍵的數修改成 0,這個 0 會直接在排好序了再在表里顯示出來。
說得簡單一點就是,增加主鍵自排約束后:
主鍵的值:修改成的 0,可以存在,就是排個序。
新添加的 0,不允許存在,要根據行號改變。
本身存在的 0,不允許存在,要從 1 開始遞增變化。
關于 MySQL 中主鍵為 0 與主鍵自排約束有什么關系就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
向 AI 問一下細節