數據庫的外鍵雖然能保證數據數據一緻性和完整性,但是也一定程度地影響了數據更新的性能。在開發中,我們使用PowerDesigner建立物理數據模型時,為了結構的清晰,增加可讀性,會創建表與表之間的關聯關系。
在實際開發中,數據庫中一般不會存在外鍵,阿裡的開發手冊中也強制不使用外鍵與級聯操作,一切外鍵概念必須在應用層解決。如果數據庫中已存在外鍵了,這時候需要禁用或者删除應該怎麼辦呢?
-- 會話級别禁用外鍵約束 SET FOREIGN_KEY_CHECKS = 0; -- 會話級别啟用外鍵約束 SET FOREIGN_KEY_CHECKS = 1; -- 全局禁用外鍵約束 SET GLOBAL FOREIGN_KEY_CHECKS = 0; 或者 SET @@GLOBAL.FOREIGN_KEY_CHECKS = 0; -- 全局啟用外鍵約束 SET GLOBAL FOREIGN_KEY_CHECKS = 1;
修改完成後可以查看修改後的結果
SELECT @@FOREIGN_KEY_CHECKS;
查詢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';
覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的内容,感興趣的朋友可以關注下~
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!