database - DBMS Oracle 中的约束

标签 database oracle oracle10g constraints check-constraints

我知道 PostgreSQL 中父表的子表会自动继承检查约束,但我担心的是 Oracle。

当您为父表中的列之一实现 CHECK 约束时,您是否也为子表的同一列(FK)实现它们?

最佳答案

不,如果子项在该列上使用 FK(外键),则没有理由使用单独的 CHECK,因为 FK 将其限制为父项的值,而父项已经在使用 CHECK。

事实上,我建议反对在子对象中实现 CHECK,因为这是重复的逻辑。尽量不要重复完整性规则;如果你需要改变它们,你想在一个地方改变它们。父级指定在这种类型的关系中哪些值是合法的(通常)。

警告:在物化 View 和查询重写选项的情况下,可能还需要在子项中包含检查约束。虽然我没有证据,但这是值得调查的事情。此外,请参阅@JeffreyKemp 评论以了解可能的优化器影响,尽管我假设统计分析器将从外键和父表中获得足够的信息。

关于database - DBMS Oracle 中的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26396795/

相关文章:

database - 如何解决 go 编程语言中的数据库结构问题?

java - 如何加快 JPA 中的列表访问速度

mysql - Oracle SOA BPEL 调用 MySQL 过程 - 参数号 2 不是输出参数

oracle - ODAC 12c 第 1 版兼容性

PostgreSQL 的数据库同步工具

database - GORM-读取/写入单独的表

mysql - Node.js 在本地存储远程数据库(同步)

java - Oracle MAF : Is it do anything that IOS xcode and android eclipse does

java - oracle.jdbc.driver.OracleDriver ClassNotFoundException 异常

oracle - 与 Java 6 一起使用的 Oracle 瘦驱动程序版本