PostgreSQL的约束
来源:互联网 发布:家庭相册制作软件 编辑:程序博客网 时间:2024/06/06 05:08
约束类型:检查约束、非空约束、唯一约束、主键、外键
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的约束
- postgresql 排它约束
- 【PostgreSQL-9.6.3】约束
- PostgreSQL 逻辑删除的表的唯一约束的控制
- PostgreSQL 添加各种约束语法
- PostgreSQL外键约束reference
- PostgreSQL 添加各种约束语法
- PostgreSQL的依赖约束(系统表pg_depend和pg_constraint)详解
- PostgreSQL 主键 外键约束 自动增长
- PostgreSQL: 浅谈 PostgreSQL 的 timestamp 类型
- 【PostgreSQL】linux环境下的PostgreSQL安装
- PostgreSQL:PostgreSQL的安装和配置
- 命名约束 vs 系统生成的约束
- 数据库的检查约束check约束
- 数据库的检查约束check约束
- XML的DTD约束和Schema约束
- 唯一约束和主键约束的区别
- 主键约束和唯一约束的区别
- 苹果明年推出跨平台应用,同时在 iPhone、Mac 上运行
- 使用AcDbEntity的Explode方法后分解对象的删除
- Postgresql临时表
- pat甲级1012-The Best Rank
- 剑指offer 编程题(28):最小的K个数
- PostgreSQL的约束
- <剑指offer 面试题2> 单例模式 (Java实现)
- Python--小甲鱼学习笔记--第27课:集合(set()、frozenset())
- 讲一次完整的产品迭代过程的各个阶段
- PostgreSQL角色和权限
- Android动态申请权限
- 读入读出优化
- JDBC Java数据库连接 1 2017年12月19日 22:37:42
- bzoj 1562: [NOI2009]变换序列 二分图最大匹配