MySQL刪除全部表的外鍵約束、禁用外鍵約束

 數據庫的外鍵雖然能保證數據數據一致性和完整性,可是也必定程度地影響了數據更新的性能。在開發中,咱們使用PowerDesigner創建物理數據模型時,爲告終構的清晰,增長可讀性,會建立表與表之間的關聯關係。 
 在實際開發中,數據庫中通常不會存在外鍵,阿里的開發手冊中也強制不使用外鍵與級聯操做,一切外鍵概念必須在應用層解決。若是數據庫中已存在外鍵了,怎麼辦呢?java

刪除全部表的外鍵
 查詢schema中全部外鍵名稱而後拼接生成刪除語句,再執行。數據庫

SELECT CONCAT('ALTER TABLE ',TABLE_SCHEMA,'.',TABLE_NAME,' DROP FOREIGN KEY ',CONSTRAINT_NAME,' ;') 
FROM information_schema.TABLE_CONSTRAINTS c 
WHERE c.TABLE_SCHEMA='庫名' AND c.CONSTRAINT_TYPE='FOREIGN KEY';
1
2
3
修改MySQL變量FOREIGN_KEY_CHECKS
-- 禁用外鍵約束
SET FOREIGN_KEY_CHECKS = 0
-- 啓用外鍵約束
SET FOREIGN_KEY_CHECKS = 1;
1
2
3
4
因爲FOREIGN_KEY_CHECKS是基於session的,當關閉了session從新創建鏈接,這個變量就會恢復默認值,也就是開啓外鍵約束,固然咱們也能夠全局的FOREIGN_KEY_CHECKS變量。session

SET GLOBAL FOREIGN_KEY_CHECKS = 0;
1
或者:性能

SET @@GLOBAL.FOREIGN_KEY_CHECKS = 0;
1
修改完成後,咱們能夠查看修改後的結果.net

SELECT @@FOREIGN_KEY_CHECKS;
--------------------- 
做者:李阿飛 
來源:CSDN 
原文:https://blog.csdn.net/junlovejava/article/details/78360253 
版權聲明:本文爲博主原創文章,轉載請附上博文連接!orm

相關文章
相關標籤/搜索