Oracle SQL-列显示可为空的“是”,尽管有检查约束
我正在将模式中的所有表迁移为分区表。因为我使用的是11g而不是12.2,所以我必须使用Oracle SQL-列显示可为空的“是”,尽管有检查约束,oracle,activerecord,oracle11g,Oracle,Activerecord,Oracle11g,我正在将模式中的所有表迁移为分区表。因为我使用的是11g而不是12.2,所以我必须使用DBMS\u重新定义。我已经用一些Ruby代码实现了自动化,这些代码为模式中的每个表执行重新定义过程 我的问题是,在迁移之后,所有不可为null的列都会显示null-YES。然而,这实际上不是真的,因为我可以检查约束,并且有为每个列定义的检查约束,这些列过去是notnull,仍然强制执行notnull状态。似乎DBMS\u重新定义成功复制了约束,但它没有反映NULLABLE状态 有没有办法让Oracle恢复同步
DBMS\u重新定义
。我已经用一些Ruby代码实现了自动化,这些代码为模式中的每个表执行重新定义过程
我的问题是,在迁移之后,所有不可为null的列都会显示null
-YES。然而,这实际上不是真的,因为我可以检查约束,并且有为每个列定义的检查约束,这些列过去是notnull
,仍然强制执行notnull
状态。似乎DBMS\u重新定义
成功复制了约束,但它没有反映NULLABLE
状态
有没有办法让Oracle恢复同步?我在别处找到了答案: Oracle复制约束,但从不重新启用“验证”。您必须手动执行以下操作:
altertable启用验证约束代码>