pgsql 8.4 文档摘录:“[...] 列约束仅在约束仅影响一列时使用时方便使用。” 那么这个有效的 sql 是怎样的呢?
DROP TABLE IF EXISTS test;
CREATE TABLE test(
id integer CONSTRAINT PK_test PRIMARY KEY CONSTRAINT nenull NOT NULL CHECK (id3>=id2)
--the check constraint affects two columns none of which is id
,id2 integer
, id3 integer
);
摘录似乎只适用于 PRIMARY KEY 和 FOREIGN KEY 约束,它们应该只影响同一行上的列,如 Catcall 所述
最佳答案
1) 列级约束是在建表时声明的,但表级约束是在建表后创建的。
2) NOT NULL
约束不能在表级别 创建,因为 All Constraint 将为该特定列提供逻辑 View ,但 NOT NULL
将分配给表本身的结构。这就是为什么我们可以在描述表时看到 NOT NULL
约束,而看不到其他约束。
3) 复合主键必须在表级别声明。
4) 所有约束都可以在表级别创建,但对于
表级 NOT NULL
是不允许的。
关于Postgresql:表约束和列约束的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455839/