非空约束在功能上等同于创建检查约束
CHECK (column_name IS NOT NULL)
,但是在PostgreSQL中,创建显式非空约束更为有效。
我很好奇
- “更有效”到底是什么意思?
- 使用
CHECK (column_name IS NOT NULL)
代替的不利之处是SET NOT NULL
什么?
我希望能够添加一个NOT VALID
CHECK
约束并分别对其进行验证(因此,AccessExclusiveLock
对于添加约束,该约束仅保留很短的时间,然后ShareUpdateExclusiveLock
对于较长的验证步骤,将其保持一段时间):
ALTER TABLE table_name
ADD CONSTRAINT column_constraint
CHECK (column_name IS NOT NULL)
NOT VALID;
ALTER TABLE table_name
VALIDATE CONSTRAINT column_constraint;
代替:
ALTER TABLE table_name
ALTER COLUMN column_name
SET NOT NULL;
1
相关:dba.stackexchange.com/questions/66840/...
—
欧文Brandstetter修改
如果您
—
马丁·史密斯
not in
同时使用这两种变体,执行计划是什么样的?它们是相同还是不同?