如何禁用和启用表 mysql 中的所有约束,包括。 PK FK CHK UNI 等

Posted

技术标签:

【中文标题】如何禁用和启用表 mysql 中的所有约束,包括。 PK FK CHK UNI 等【英文标题】:How to disable and enable all constraints in table mysql incl. PK FK CHK UNI etc 【发布时间】:2015-05-23 20:25:06 【问题描述】:

我需要将测试数据加载到表中,并且我想禁用所有可能的约束,我已经找到了如何全局关闭外键,但我需要禁用所有约束,PK、FK、CHK、UNIQ 等。是有可能在全球范围内做到吗?当然,在那之后我必须调整所有约束。

【问题讨论】:

为什么你认为这会有用?? 【参考方案1】:

使用以下方法禁用约束:

-- disable UNIQ, PK, ...
ALTER TABLE <tablename> DISABLE KEYS;
-- diable FK
SET FOREIGN_KEY_CHECKS=0;

查看this site 以获取更多示例。恢复:

SET FOREIGN_KEY_CHECKS=1;
ALTER TABLE <tablename> ENABLE KEYS;

来自参考:

foreign_key_checks DISABLE KEYS: " 使用 ALTER TABLE ... DISABLE KEYS 告诉 mysql 停止更新非唯一索引。..."

附言:来自InnoDB performance tuning tips

SET autocommit=0; 
SET unique_checks=0; 
SET foreign_key_checks=0;

【讨论】:

是否可以在架构中全局禁用所有键? 根据这篇文章禁用是基于会话的:***.com/questions/8538636/… 我发出了禁用键命令。我的架构使用 innoDB 并向我返回警告“表的表存储引擎没有此选项” 好的,我明白了。可能对你有帮助:dev.mysql.com/doc/refman/5.0/en/innodb-tuning.html

以上是关于如何禁用和启用表 mysql 中的所有约束,包括。 PK FK CHK UNI 等的主要内容,如果未能解决你的问题,请参考以下文章

暂时禁用所有外键约束

如何在导入过程中禁用Oracle约束条件和触发器

如何禁用唯一密钥

用于禁用/启用触发所有的 Postgresql 权限

Oracle中禁用了外键约束对系统有没有影响

批量执行语句之——禁用所有表的外键