MySQL刪除所有表的外鍵約束、禁用外鍵約束


其實如果想刪除所有表可以直接如下操作:

在navicat中直接選中所有表,然后右鍵刪除表即可,會有提示,一路確定,就會先刪掉沒有外鍵的表和字表,只要一路確定,刪幾批就把表都刪完了,並不算太麻煩。

 

轉:

MySQL刪除所有表的外鍵約束、禁用外鍵約束

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/junlovejava/article/details/78360253

 數據庫的外鍵雖然能保證數據數據一致性和完整性,但是也一定程度地影響了數據更新的性能。在開發中,我們使用PowerDesigner建立物理數據模型時,為了結構的清晰,增加可讀性,會創建表與表之間的關聯關系。
 在實際開發中,數據庫中一般不會存在外鍵,阿里的開發手冊中也強制不使用外鍵與級聯操作,一切外鍵概念必須在應用層解決。如果數據庫中已存在外鍵了,怎么辦呢?

刪除所有表的外鍵

 查詢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變量。

SET GLOBAL FOREIGN_KEY_CHECKS = 0;
  • 1

或者:

SET @@GLOBAL.FOREIGN_KEY_CHECKS = 0;
  • 1

修改完成后,我們可以查看修改后的結果

SELECT @@FOREIGN_KEY_CHECKS;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM