GBase 8c
安装配置
文章
GBase 8c 数据定义-检查约束
发表于2023-12-06 14:02:5236次浏览3个评论
GBase 8c数据库支持检查约束。
检查约束是最普通的约束类型。它指定某个特定列中的值必须要满足某个布尔表达式。例如,为了要求正值的产品价格,可以使用如下语句:
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0)
); 可见约束定义和默认值定义一样跟在数据类型之后。默认值和约束之间的顺序没有影响。一个检查约束有关键字CHECK以及其后的包围在圆括号中的表达式组成。检查约束表达式应该涉及到被约束的列,否则该约束没有实际意义。
也可以给与约束一个独立的名称。这会使错误消息更为清晰,同时也方便在需要更改约束时能引用它。语法为:
CREATE TABLE products (
product_no integer,
name text,
price numeric CONSTRAINT positive_price CHECK (price > 0)
); 要指定一个命名的约束,请在约束名称标识符前使用关键词CONSTRAINT,然后把约束定义放在标识符之后(如果没有以这种方式指定一个约束名称,系统将会为我们选择一个)。
检查约束也可以引用多个列。例如存储一个普通价格和一个打折后的价格,而我们希望保证打折后的价格低于普通价格:
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0),
discounted_price numeric CHECK (discounted_price > 0),
CHECK (price > discounted_price)
);前两个约束看起来很相似。第三个则使用了一种新语法。它并没有依附在某个特定列,而是作为一个独立项出现在逗号分隔的列的列表中。列定义和约束定义可以以混合的顺序出现在列表中。我们将前两个约束称为列约束,而第三个约束为表约束,因为它独立于任何一个列定义。列约束也可以写成表约束,但反过来不行,因为列约束只能引用它所依附的那个列。上述例子也可以写成:
CREATE TABLE products (
product_no integer,
name text,
price numeric,
CHECK (price > 0),
discounted_price numeric,
CHECK (discounted_price > 0),
CHECK (price > discounted_price)
);或者是:
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0),
discounted_price numeric,
CHECK (discounted_price > 0 AND price > discounted_price)
);
评论
登录后才可以发表评论
levvel发表于 8个月前
进来看看,应该有收获
崔哥发表于 4个月前
浅浅余寒春半,雪消蕙草初长。烟迷柳岸旧池塘。风吹梅蕊闹,雨细杏花香。月堕枝头欢意,从前虚梦高唐,觉来何处放思量。如今不是梦,真个到伊行。
GBase用户51882发表于 2个月前
学会了
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526