[英]MySQL: Dropping a foreign key constraint on an InnoDB table
我想从表中删除外键约束,这花费了很长时间,并且我想知道在生产环境中执行此操作会发生什么不好的事情。
ALTER TABLE table DROP FOREIGN KEY fk_my_foreign_key;
根据要求提供更多信息:
在大多数情况下,ALTER TABLE通过制作原始表的临时副本来工作。 在副本上执行更改,然后删除原始表,并重命名新表。 执行ALTER TABLE时,其他会话可以读取原始表。 对表的更新和写入将暂停,直到准备好新表,然后将其自动重定向到新表,而不会进行任何失败的更新。 谢谢。
那其他情况呢? 我可以防止这种锁吗?
首先,我必须说,最佳实践始终是在脱机环境中测试这种变化。
该表是否被复制使用? 如果是这样,则需要先将其删除。 另外,如果当前正在使用该表,则该表可能已锁定在进程中,请检查活动监视器并查找死锁。 确保密钥也不会被任何索引引用是一个好主意
为了安全正确地删除外键,可以在Google上找到许多详细的文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.