概述数据库中的外键虽然可以保证数据的一致性和完整性,但也会在一定程度上影响数据更新的性能。在开发中,我们在使用PowerDesigner建立物理数据模型时,为了结构清晰,增加可读性,我们会创建表与表之间的关联关系。在实际开发中,数据库中一般没有外键。阿里的开发手册也是强制不使用外键和级联操作的。所有的外键概念都必须在应用层解决。如果数据库中已经存在外键,此时需要禁用或删除外键怎么办?1、修改MySQL变量FOREIGN_KEY_CHECKS(批量禁用和启用所有表的外键)--禁用会话级外键约束SETFOREIGN_KEY_CHECKS=0;--在会话级别启用外键约束SETFOREIGN_KEY_CHECKS=1;--全局禁用外键约束SETGLOBALFOREIGN_KEY_CHECKS=0;或SET@@GLOBAL.FOREIGN_KEY_CHECKS=0;--全局启用外键约束SETGLOBALFOREIGN_KEY_CHECKS=1;修改后可以查看修改后的ResultSELECT@@FOREIGN_KEY_CHECKS;2.批量删除所有表的外键查询schema中的所有外键名,然后拼接生成delete语句,然后执行。SELECTCONCAT('ALTERTABLE',TABLE_SCHEMA,'.',TABLE_NAME,'DROPFOREIGNKEY',CONSTRAINT_NAME,';')FROMinformation_schema.TABLE_CONSTRAINTScWHEREc.TABLE_SCHEMA='数据库名'ANDc.CONSTRAINT_TYPE='FOREIGNKEY';
