首批通过分布式安全可靠测评,为关键业务系统打造
foreign_key_checks
更新时间:2024-07-11 00:04:57
说明
该变量从 V2.1 版本开始引入。
功能描述
foreign_key_checks 用于设置是否在 DML/DDL 中检查外建约束。
功能适用性
该变量仅适用于 OceanBase 数据库 MySQL 模式。
属性说明
| 属性 | 描述 |
|---|---|
| 参数类型 | bool |
| 默认值 | 1 |
| 取值范围 | |
| 生效范围 | |
| 是否可修改 | 是,支持通过 SET 语句修改。 |
使用说明
外键检查由 foreign_key_checks 变量控制,该变量默认启用。通常,在正常操作期间启用此变量以强制执行参照完整性。
在以下情况下禁用 foreign_key_checks 会对数据库带来正面影响:
删除由外键约束引用的表。只有在禁用
foreign_key_checks后才能删除引用的表。删除表时,表上定义的约束也会被删除。以不同于外键关系所需的顺序重新加载表。
进行数据导入操作时,可以关闭外键检查,以加速数据导入。
对具有外键关系的表执行
ALTER TABLE操作。
同样,禁用 foreign_key_checks 也会带来一些负向影响:
允许删除包含带有外键的表的数据库,这些表被数据库外的表引用。
允许删除带有其他表引用的外键的表。
启用 foreign_key_checks 不会触发表数据的扫描,这意味着当 foreign_key_checks 重新启用时,在禁用 foreign_key_checks 时添加到表中的行不会检查一致性。
配置示例
Session 生效
obclient> SET foreign_key_checks=1;Global 生效
obclient> SET GLOBAL foreign_key_checks=1;