Postgresql:表约束和列约束的区别

标签 postgresql constraints

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/

相关文章:

postgresql - 嵌套 plpgsql 函数中的计算比直接查询慢?

python - django.core.exceptions.ValidationError : ["' ' is not a valid UUID.“]

ios7 - 自动布局 : Distribute views evenly, 中的 Spring 带有约束,在 Xcode 5 中

sql - 外键约束可能会导致循环或多级联路径?

c# - 类型参数的约束 - 其中 T : class

c# - 尝试删除条目时接收 System.IO.IOException

node.js - 我无法连接到 postgres 数据库

具有可选参数的 Postgresql 函数

java - 用于禁用约束的 Informix DDL 执行

ruby-on-rails - rails : constraint violation on create but not on update