我有一个表,其中的列包含一些空值。我想NOT NULL在该列上添加约束,而不将现有的null更新为非null值。我想保留现有的空值,并检查将来的行,它们是否包含此列的非空值。这可能吗?如何?
NOT NULL
您可以添加未验证的约束-它不会查看现有行,但是会检查是否有任何新行或更新行。
ALTER TABLE mytable MODIFY mycolumn NOT NULL NOVALIDATE;
请注意,除非满足约束,否则您将无法更新现有行。
另外,请注意,不利之处在于,优化器在制定计划时将无法利用此约束-它必须假设某些行可能仍为null。