說我有一個表mySQL業務。如何更改mysql中的ID
每個「業務」中的ID是標題和位置的函數。它使編程更容易。
我還經常合併2家相同的企業等
說有一天,企業變革的冠軍,我想改變ID。我很少做的一項手術。
許多其他表格指向該業務。
那我該怎麼辦?
我應該創建新ID,然後將所有指向原始業務的關係更改爲新ID嗎?
是否有一個mysql命令可以更快地執行此操作?
任何示例代碼vb.net?
說我有一個表mySQL業務。如何更改mysql中的ID
每個「業務」中的ID是標題和位置的函數。它使編程更容易。
我還經常合併2家相同的企業等
說有一天,企業變革的冠軍,我想改變ID。我很少做的一項手術。
許多其他表格指向該業務。
那我該怎麼辦?
我應該創建新ID,然後將所有指向原始業務的關係更改爲新ID嗎?
是否有一個mysql命令可以更快地執行此操作?
任何示例代碼vb.net?
根據每個表及其設計使用的數據庫引擎,如果已配置了外鍵和表約束,則可能不需要執行任何操作。
首先要做的是檢查鏈接表的結構。要做到這一點,一個MySQL會話中運行show create table xyz
和檢查:
(外鍵只是任何真正的在使用InnoDB引擎時可以使用,你可以在其他引擎中請求它們,但是它們不會做任何事情。)
如果你很幸運能夠使用InnoDB引擎並且有適當的約束,如:
CONTRAINT `FK_businessID` FOREIGN KEY(`businessID`) REFERENCES `Business` (`ID`)
ON DELETE CASCADE ON UPDATE CASCADE
在表中的定義。如果您確實看到類似的情況,您應該應該能夠安全地更改業務表中的ID,並且所有其他鏈接的表都應該跟隨。
如果沒有外鍵,但是使用InnoDB引擎,在單個事務中修改的所有表中的信息,這樣,如果有什麼不出差錯做你的控制範圍之外的變化(連接丟失,查詢錯誤等),你可以回滾。
最後,如果你不使用InnoDB引擎,祝你好運。你將不得不冒險改變記錄本質上'動態'。你的主要選擇(個人喜好的順序):
顯然,上述所有的,做很多(和我說很多)使你的頭腦之前的測試和備份。並且在最少數量的客戶使用數據庫的時候這樣做;換句話說,過夜。
我用innodb。你確定innodb會自動改變所有的指針嗎?似乎刪除級聯就是這樣,當刪除時,它們被刪除。哦更新級聯 –
它應該通過更新。用相似的結構敲擊幾個測試表並嘗試一下。記得!測試是你的朋友 – DaveyBoy
我做到了。有用。 +1。被選爲最佳答案。非常感謝。 –
如果您有使用「ON UPDATE CASCADE」定義的外鍵約束,您的更改將自動傳播到所有相關表。 – eggyal