2013-11-23 46 views
0

假設我有一個表名爲供應我要刪除的第一行:如何在刪除表中的第一行後保持一致性。 MySQL的

delete from suppliers where supplierID = 1 

是什麼意思,「採取一切必要措施保持一致性」事先查詢後?主鍵(SupplierID)是使用AUTO_INCREMENT創建的。

+2

一致性可被破壞,相關的供應商。 – user4035

+0

通過代碼,是否有辦法處理這種情況?我知道關鍵可能是引用其他軟件,因此,我有一個孤兒記錄 – user2948897

+0

在InnoDB中,您可以使用ON DELETE CASCADE自動刪除從屬記錄。在MyISAM中,您必須手動刪除它們。 – user4035

回答

2

那麼,如果你使用AUTO_INCREMENT,那麼你不能做你在想什麼,因爲數據庫中的AUTO_INCREMENT鍵用於唯一標識給定的行。找到最低未使用密鑰值的最佳方法是根本不使用AUTO_INCREMENT,然後手動管理密鑰。

另外要提及的是,您可以使用ON DELETE CASCADE自動刪除InnoDB數據庫中的相關記錄,但是在MyISAM中您必須手動刪除它們。

另請檢查此reference

0

爲了保持連貫性,您應該在依賴表中使用InnoDB endine和foreign key指向Suppliers.supplierID

然後,如果您嘗試刪除任何其他表中引用的記錄,則數據庫將發出錯誤。第一供應商的

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

ID可以發現這樣:只有當你有一個相關的表外鍵

SELECT MIN(supplierID) FROM Suppliers 
相關問題