zoukankan      html  css  js  c++  java
  • PostgreSQL的约束

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

    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

    );

     

     

     

     

     

  • 相关阅读:
    【BZOJ 1013】 [JSOI2008]球形空间产生器sphere
    【codeforces 779A】Pupils Redistribution
    【codeforces 779B】Weird Rounding
    【codeforces 779C】Dishonest Sellers
    Residential Gateway System for Home Network Service
    互联网大规模数据分析技术(自主模式)第五章 大数据平台与技术 第10讲 大数据处理平台Hadoop
    大数据系统基础(自主模式) 2.1大数据和云计算关系概述
    设计模式(10) 外观模式(FACADE)
    命令模式(Command Pattern)
    设计模式(三)建造者模式Builder(创建型)
  • 原文地址:https://www.cnblogs.com/baisha/p/8082781.html
Copyright © 2011-2022 走看看