外键可以用`check`表示吗?

时间:2018-07-09 15:29:53

标签: postgresql

postgresql manual

  

检查约束是最通用的约束类型。

check有多通用?外键可以用check表示吗?谢谢。

1 个答案:

答案 0 :(得分:2)

CREATE TABLE documentation包括CHECK约束的更多技术定义,包括以下句子:

  

当前,CHECK表达式不能包含子查询,也不能引用当前行的列以外的变量。

CHECK约束是通用的,因为您可以编写任意表达式,而不仅仅是列名或标准条件。 NOT NULL约束可以表示为CHECK约束,也可以表示为text / VarChar列的长度限制(即foo VarChar(10)大致等于foo text CHECK (length(foo) <= 10)

但是,约束总是关于表的单行的断言。其他类型的约束也可用于其他类型的断言:

  • 要声明表中各行之间的比较,有UNIQUEPRIMARY KEYEXCLUSION约束。
  • 要声明不同表中的行之间的关系或表中的行之间的自引用,存在FOREIGN KEY约束。