我正在執行一個函數,以防止刪除數據庫中的某些元素(通過前端),如果他們在其他表中與其他項相關聯。否則,那些其他表正在尋找不在那裏的密鑰。MySQL:如何查找某個特定主鍵在其他表中的外鍵?
如果你明白我的帽子是給你的。
我有許多套表通過尋找和需要或者SQL查詢或MySQL工作臺的功能,可以告訴我,在主鍵(列名,而不是實際值)的條目時,如果該鍵是用作其他地方的外鍵。
否則,如果有人知道一個非正式的解決方法,那也太棒了!
我正在執行一個函數,以防止刪除數據庫中的某些元素(通過前端),如果他們在其他表中與其他項相關聯。否則,那些其他表正在尋找不在那裏的密鑰。MySQL:如何查找某個特定主鍵在其他表中的外鍵?
如果你明白我的帽子是給你的。
我有許多套表通過尋找和需要或者SQL查詢或MySQL工作臺的功能,可以告訴我,在主鍵(列名,而不是實際值)的條目時,如果該鍵是用作其他地方的外鍵。
否則,如果有人知道一個非正式的解決方法,那也太棒了!
SELECT
table_name, column_name
FROM
information_schema.key_column_usage
WHERE
referenced_table_name = '<table>'
and referenced_column_name = '<primary key column>'
key_column_usage不存在? – spuriosity
這可能是因爲你連接的用戶名沒有訪問權限查看錶.. – StevieG
對不起,意味着更新,不得不重新打開我的界面,它被卡在模式內(隨機,不要問!)。無論如何,找到它並使用你的代碼,但得到以下錯誤:錯誤代碼:1054.'where子句'中的未知列'operatingsystem'。操作系統是一個表名稱,並在查詢中被引用表名稱... – spuriosity
的溶液中this post描述檢索來自INFORMATION_SCHEMA表此信息。
1)如果你想從你的代碼中處理這些表,然後將它們作爲一個容器,例如你的代碼中的ArrayList,並執行你的邏輯。
2)如果你想從你的存儲過程中處理這些表,那麼使用臨時表來實現你在java代碼中通過容器做的相同工作。
我使用Hibernate提取它們並將它們放入ArrayList中 – spuriosity
可能重複的[MySQL:如何找到所有具有外鍵引用特定table.column並具有這些外鍵的值的表?](http://stackoverflow.com/questions/806989/mysql-how -to-i-find-all-tables-that-have-foreign-keys-that-reference-particular) – Johan
爲什麼不簡單地嘗試刪除該項並捕獲從FK違規中獲得的任何錯誤? –
請參閱:http://dev.mysql.com/doc/refman/5.0/en/table-constraints-table.html(特定)和http://dev.mysql.com/doc/refman/5.0/en/ information-schema.html(一般來說) – Johan