当前位置:   article > 正文

PostgreSQL的约束_pgsql drop 判断

pgsql drop 判断

作者:瀚高PG实验室 (Highgo PG Lab)- 汀上白沙

约束类型:检查约束、非空约束、唯一约束、主键、外键

1.  检查约束

设置某个字段里的数值必须满足约束表达式的条件。

例:限制人的年龄在0~120之间,语句如下:

create table person(name varchar(40),age int check (age >=0 and age<=120));

insert into  person values('name1',120);

insert into  person values('name1',121);

执行结果如下,年龄字段超过120报错,提示受“person_age_check”的限制。

指定约束的名称,需要使用关键词“constraint”,示例如下

create table person(name varchar(40),age int constraint age_chk check (age >=0 and age<=120));

一个检查约束可以引用多个列,例如:存储商品平常价格和打折价格,而打折价格低于平常价格,示例如下

create table products (

    product_no integer,

    name text,

    price numeric check (price > 0),

    dazhe_price numeric check (dazhe_price > 0),

    constraint dazhe_price_chk check (price >dazhe_price)

);

在上面的例子中,针对价格(price > 0)和打折后价格(dazhe_price > 0)的约束称为列约束,这两个约束依附于特定的列,但第三个约束(price >dazhe_price)独立于任何一个列定义,称为表约束。

执行结果如下:

注:oracle下,检查约束可以禁用,但在PostgreSQL下却不可以禁用。

2.  非空约束

非空约束仅仅指定一个列中不会有空值。非空约束等价于检查约束(column_name is not null)。示例如下:

create table products (

    product_no integer,

    name text,

    price numeric not null,

    dazhe_price numeric check (dazhe_price > 0),

    constraint dazhe_price_chk check (price >dazhe_price)

);

3.  唯一约束

唯一约束保证在一列或一组列中保存的数据是唯一值,示例如下:

create table products (

    product_no integer UNIQUE,

    name text,

    price numeric

);

为一组列定义一个唯一约束,示例如下:

create table products (

    product_no integer,

    name text,

    price numeric,

    UNIQUE(product_no, price)

);

为唯一约束指定名称:

create table products (

    product_no integer CONSTRAINT pro_no_unique UNIQUE,

    name text,

    price numeric

);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/554240
推荐阅读
相关标签
  

闽ICP备14008679号