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
);
PostgreSQL的约束的更多相关文章
- 从头开始学习数据库及ADO.NET之PostgreSql字段约束——竹子整理
约束数据表列执行的规则.这些是用来防止无效的数据被输入到数据库中..这确保数据库中的数据的准确性和可靠性. 约束可以是列级或表级.仅适用于表级约束被应用到整个表的列级约束.为列定义的数据类型,本身是一 ...
- postgresql 唯一约束增强
http://blog.chinaunix.net/uid-15145533-id-2775821.html
- postgresql数据库primary key约束/not null约束/unique约束及default值的添加与删除、列的新增/删除/重命名/数据类型的更改
如果在建表时没有加primary key约束.not null约束.unique约束.default值,而是创建完表之后在某个字段添加的话 1.primary key约束的添加与删除 给red_pac ...
- 外键的约束(Mysql、PostgreSQL)
关于外键是什么,具体不再详述,可以自行百度. 讲一下关于外键的 On Delete和On Update的使用 最近在项目的表中看到这些,不懂顺便查了查: ONSTRAINT "c_clust ...
- PostgreSQL创建表及约束
创建表 语法: create table table_name ( column_name type column_constraint, table_constraint table_constra ...
- postgresql 用 like 可以 复制结构包括主键约束
create tabletablename ( like tablename INCLUDING INDEXES INCLUDING COMMENTS); PostgreSQL 动态表复制(CREAT ...
- PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库
最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...
- postgresql 导出数据字典文档
项目上需要整理目前数据库的数据字典文档.项目不规范,这种文档只要后期来补.这么多张表,每个字段都写到word文档里真心头大.就算前面写了个查询表结构的sql,但是最后整理到word里还是感觉有点麻烦. ...
- SQLite vs MySQL vs PostgreSQL:关系型数据库比较
自1970年埃德加·科德提出关系模型之后,关系型数据库便开始出现,经过了40多年的演化,如今的关系型数据库种类繁多,功能强大,使用广泛.面对如此之多的关系型数据库,我们应该如何权衡找出适合自己应用场景 ...
随机推荐
- RabbitMQ的简单应用【转】
虽然后台使用了读写分离技术,能够在一定程度上抗击高并发,但是如果并发量特别巨大时,主数据库不能同时处理高并发的请求,这时数据库容易宕机. 问题: 现在的问题是如何既能保证数据库正常运行,又能实现用户数 ...
- win10下cmd备注
要复制cmd里的字符串,右键选标记,选中待复制的字符串,ctrl+c 复制,ctrl+v粘贴内容(或者右键选择复制).这项操作支持复制cmd里的内容到其他地方,如txt里 win10之前cmd不支持c ...
- upc组队赛14 Floating-Point Hazard【求导】
Floating-Point Hazard 题目描述 Given the value of low, high you will have to find the value of the follo ...
- VB - 错误处理
1.最常见的错误是运行时错误,也就是说错误在脚本正在运行的时候发生,是脚本试图进行非法操作的结果.例如零被作为除数.在vbs中,任何运行时错误都是致命的,此时,脚本将停止运行,并在屏幕上显示一个错误消 ...
- OSG+Visual Studio2015项目变量设置;
OSG源码经过CMAKE编译后: 1.配置OSG环境变量: 用户变量的PATH中添加路径 C:\OSG\bin系统变量中添加新变量OSG_FILE_PATH为 C:\OSG\data 2.VS新建项目 ...
- python网络爬虫实战之快速入门
本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...
- 爬虫-ajax请求遇到Unicode编码问题
2018-08--4爬取金色财经网页 网址:https://www.jinse.com/search/EOS 第一步:我观察了网页:发现了网页是一个发送ajax请求的网页,发现如下: 然后 我就先爬取 ...
- [fw]谈EXPORT_SYMBOL使用
EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的.2.6就必须用EXPO ...
- springmvc 异常统一处理的三种方式详解
1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦 ...
- 第二则java读取excel文件代码
// 得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全 String savePath = this.getServletContext().ge ...