簡體   English   中英

在MySQL中重新排列主鍵

[英]Rearrange primary keys in mysql

從MySQL中的表中刪除一些行后,如何重新排列主鍵列值?

敵人的例子; 一個具有4行數據且主鍵值為1,2,3,4的表。 刪除第二行和第三行時,第四行的鍵值將更改為2。

請幫助我找到解決方案。

為什么這樣 不需要重新排列密鑰,因為它只是數字和記錄的標識符。 它沒有實際意義 -因此讓DBMS處理。 這是一個非常常見的錯誤-嘗試扮演DBMS角色。

但是,我會回答您的常見問題。 在MySQL中,您可以使用以下方法重新排列列:

update t cross join (select @cur:=0) as init set t.col=@cur:=@cur+1

-但是,這不能與UNIQUE (也包括主鍵)限制下的列一起使用,因為在更新期間您可能會得到重復的記錄。 您應該先刪除限制,然后再執行此操作(並在更新后再次創建)。

一種方法是THIS ONE

除此之外,您可以簡單地刪除主要表,然后再次創建它。 這樣就可以了

為什么要更改數據的主鍵? 通常,這樣做是個壞主意,尤其是當完整性約束進入游戲時。 如果您需要這樣做,我會說您的數據庫設計不佳,您應該在這方面進行仔細研究。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM