OceanBase外键疑问

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】4.2
【问题描述】目前oceanbase外键是否不支持引用普通列,后续打算支持吗
【复现路径】问题出现前后相关操作
【问题现象及影响】

【附件】

1 个赞

目前官方文档及社区版里仅支持引用父表的全主键和唯一索引建,应该不支持引用普通列,应该是出于并发锁粒度的考虑吧。Mysql外键还支持在普通索引列或普通索引前缀列上建外键引用关系,不清楚后续对应计划咯

2 个赞

这个确实是与mysql的行为不一致,我咨询下具体原因给你答复


MYSQL官方说外建引用非唯一索引不是标准SQL而是InnoDB引擎的扩展

目前还没有要对齐的计划,如果有需要可以在github给我们提个Feature

2 个赞


感谢解答!还有一个问题如上,这种自引用的表插入数据时,OB保证了结果满足约束,同样的insert语句在mysql8是会报错的,请问这是这么设计的还是一个bug呢

MySQL的外键检查时逐行检查的,每插入一行,做一次检查;这里插入(1,2)这一行的时候,此时表里还没有父键 = 2的行,因此会报错;
OB的外键检查时按批进行的,每插入一批,做一次检查,因此这个场景是符合约束,可以通过检查;

1 个赞

感谢解答,已了解

1 个赞