我想从表中删除外键约束,这需要很长时间,我想知道在生产环境中执行此操作会发生什么坏事。
ALTER TABLE table DROP FOREIGN KEY fk_my_foreign_key;
根据要求提供更多信息:
在大多数情况下,ALTER TABLE通过制作临时副本来工作 原始表。在副本上执行更改,然后执行 删除原始表并重命名新表。虽然ALTER TABLE正在执行,原始表可由其他会话读取。 对表的更新和写入将停止,直到新表为止 准备好,然后自动重定向到新表而不用 任何失败的更新。感谢。
其他案件怎么样?我可以阻止这种锁吗?
答案 0 :(得分:-2)
首先,我必须说最佳实践总是在离线环境中测试这样的变化。
复制使用的表是?如果是这样,你需要先删除它。此外,如果当前正在使用该表,则可以将其锁定在进程中,检查活动监视器并查找死锁。确保密钥也不被任何索引引用
是个好主意为了安全正确地删除外键,可以在Google上找到许多详细的文章。