是什么理由让你彻底抛弃数据库的外键?
    完全不使用外键,涉及到外键的逻辑全部在应用代码里实现。
    询问项目负责人,告知不使用数据库外键主要有两原因:

    1. 多台服务器不停机升级时,有可能数据库新加入的外键限制导致新程序没办法在旧数据库上跑
    2. 运维人员对数据库外键深恶痛绝(举例说唯品会就是这样做的)

    听起来只要是分布式的服务器热升级(第一点原因)、或者团队里有运维人员,就应该抛弃数据库外键了。
    约束一般在逻辑里实现。
    对数据一致性要求不严格的场景都不应该使用外键
    外键本身是为了实现强一致性 跟大规模并发和分布式都是冲突的
    一些对性能没追求或者数据极其重要,可靠性要求高的业务外键是不可少的
    也没有绝对的舍弃外键,像金融、供应链等场景还是需要优先保证数据完整性的。
    不过在互联网业务场景下,会尽量减少连接查询,降低表之间的逻辑耦合,当所谓的外键记录不存在时,指定默认值或者直接报错。
    保证约束需要消耗额外的计算资源。应用服务器相对数据库服务器来说更容易水平扩展,因此约束就放在业务逻辑里做了
    SET FOREIGN_KEY_CHECKS=0;
    数据库使用外键,属于教条主义!
    我觉得外键大多数存在于教科书。实际项目中比较少(基本上不用)外键,主要是表多了不好维护。用一定的存储过程,一定的视图等。很少在数据库中(至少在我见到的十几万行 sql 中)使用控制流语句。数据库不适合干复杂的事情。
    除非小项目,基本不使用外键。外键关系使用程序代码来维护,在数据库中不体现。
    后期如果需要数据清理,数据调整时,有外键关系(尤其是复杂的外键关系)会造成表数据非常难以修改、维护。
    我想通了 , 一旦涉及到业务,可能大多数公司的代码都烂的不行