PG唯一索引与唯一约束.sql
PG 唯一约束与唯一索引
- 实例
create table test(id serial, name text);
ALTER TABLE test add CONSTtraint uk_test_name unique(name);create table test2(id serial, name text);
create unique index idx_test2_name on test2 using btree(name);insert into test (name) values('zhangsan'),(NULL),(NULL);
insert into test2 (name) values('zhangsan'),(NULL),(NULL);
- 结果
test=# \d testTable "public.test"Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+----------------------------------id | integer | | not null | nextval('test_id_seq'::regclass)name | text | | |
Indexes:"uk_test_name" UNIQUE CONSTRAINT, btree (name)test=# \d test2Table "public.test2"Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+-----------------------------------id | integer | | not null | nextval('test2_id_seq'::regclass)name | text | | |
Indexes:"idx_test2_name" UNIQUE, btree (name)test=# select * from test;id | name
----+----------1 | zhangsan2 | 3 |
(3 rows)test=# select * from test2;id | name
----+----------1 | zhangsan2 | 3 |
(3 rows)test=#
限制唯一索引的多个 NULL 值
- 实例
create table t_abc(a2 varchar(10));CREATE UNIQUE INDEX idx_t_abc ON t_abc ((a2 is null)) WHERE a2 IS NULL;insert into t_abc values('1');
insert into t_abc values(NULL);
insert into t_abc values(NULL);
- 测试结果
test=# create table t_abc(a2 varchar(10));
CREATE TABLE
test=#
test=# CREATE UNIQUE INDEX idx_t_abc ON t_abc ((a2 is null)) WHERE a2 IS NULL;
CREATE INDEX
test=#
test=# insert into t_abc values('1');
INSERT 0 1
test=# insert into t_abc values(NULL);
INSERT 0 1
test=# insert into t_abc values(NULL);
ERROR: duplicate key value violates unique constraint "idx_t_abc"
DETAIL: Key ((a2 IS NULL))=(t) already exists.
test=#
- 总结:
唯一索引与唯一约束在 PG 中功能几乎相同
唯一索引与唯一约束不能直接限制多个NULL 值
在创建唯一索引的时候可以使用额外的参数,因而可以间接实现限制 多个 NULL 值的情况
PG唯一索引与唯一约束.sql相关推荐
- SQL Server中唯一索引和唯一约束之间的区别
This article gives you an overview of Unique Constraints in SQL and also the Unique SQL Server index ...
- 又来说一下顺序~关于唯一索引和唯一约束的顺序
上次说了同一个对象里面不同触发器的执行顺序.今天我也想分享一些我在同一个表里面,建上不同的唯一约束,不同的唯一索引,看下结果会怎样 首先简单建个测试表,不多,就4列 CREATE TABLE AAA3 ...
- oracle 唯一索引,唯一约束,主键之间的联系
主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录,在两个表的关系中,主键用来在一个表中引用来自于另一个表中的特定记录,,主键时一种唯一关键字,表定义的一部分. ...
- 主键,唯一索引,唯一约束三者之间的联系与区别
主键本质是约束,值不为空,一个表只能建一个,其目的是检查数据的正确性: 唯一索引本质是索引,值可为空,一个表能建多个,其目的是实现数据查询的优化: 唯一约束本质是约束,值可为空,一个表能建多个,其目的 ...
- oracle 主键 唯一性,oracle 唯一索引,唯一约束,主键之间的联系
主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录,在两个表的关系中,主键用来在一个表中引用来自于另一个表中的特定记录,,主键时一种唯一关键字,表定义的一部分. ...
- mysql删除表中的唯一索引吗_Mysql 使用sql删除同表中重复数据并加唯一索引
同一张表中,假设以两个字段做唯一业务,这两个字段分别为key1,key2, 则以这两个字段为唯一 DELETE tablename FROM tablename , ( SELECT min(id) ...
- 【翻译】SQL Server索引进阶:第八级,唯一索引
原文地址: Stairway to SQL Server Indexes: Level 8,Unique Indexes 本文是SQL Server索引进阶系列(Stairway to SQL Ser ...
- 【译】SQL Server索引进阶第八篇:唯一索引
索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其效果适得其 ...
- 【译】索引进阶(八):SQL SERVER唯一索引
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 在本章节我们检查唯一索引.唯一索引的特别之处在于它不仅提供了性能益处,而且提供了数据完整性益处.在SQL SER ...
最新文章
- 蚂蚁金服自研的OceanBase升级到2.0了,据说性能……
- 浏览器加载本地html页面,在浏览器字段中加载本地HTML文件时是否显示白屏?
- mysql dba系统学习(2)了解mysql的源码目录及源文件
- linux mint 安装php,使用apt-get方式为Linux Mint 13安装PHP+MYSQL+Apache
- 看我出招之:svchost.exe文件删不得
- XP下安装SQL2000企业版
- 《终极海报——23位创意大咖的设计评论与思想》—埃伦 • 勒普顿
- android标题栏上增加按钮,Android:向自定义标题栏添加按钮
- 定时任务及分布式定时任务注意事项
- [bowen干货-5分钟算法系列]简洁不废话的排序算法-直接选择排序
- 三极管场效应参数全集
- 51单片机数码管静态显示
- 数据库密码忘了如何修改
- 诺基亚 and 微软,两只大象能否共舞?
- 游戏开发物语方案点数分配_游戏开发物语攻略 游戏开发物语新手须知技巧
- springboot基于web的传染病信息管理系统的设计与实现毕业设计-附源码221124
- sinx泰勒展开_高考中怎么用泰勒公式?
- 从今起,我蹲马步,苦练基本功
- 如何修复Word文档XML提示
- cmd打开时提示“系统找不到指定的路径”“the system cannot find the path specified”