首批通过分布式安全可靠测评,为关键业务系统打造
foreign_key_checks
更新时间:2026-04-15 17:17:00
说明
该变量从 V2.1 版本开始引入。
功能描述
foreign_key_checks 用于设置是否在 DML/DDL 中检查外建约束。
功能适用性
该变量仅适用于 OceanBase 数据库 MySQL 模式。
权限要求
查询变量
Global 级别
sys租户和所有用户租户均可以使用SHOW VARIABLES语句或视图information_schema.GLOBAL_VARIABLES(MySQL 模式)查看 Global 系统变量的值。Session 级别
sys租户和所有用户租户均可以使用SHOW VARIABLES语句或视图information_schema.SESSION_VARIABLES(MySQL 模式)查看 Session 系统变量的值。
修改变量
Global 生效
sys租户可以直接修改 Global 系统变量的值。MySQL 用户租户需要拥有
SUPER或ALTER SYSTEM权限才能修改 Global 系统变量的值。
Session 生效
sys租户和所有用户租户均可以直接修改本租户的 Session 系统变量的值。
属性说明
| 属性 | 描述 |
|---|---|
| 参数类型 | 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;