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相关推荐

  1. SQL Server中唯一索引和唯一约束之间的区别

    This article gives you an overview of Unique Constraints in SQL and also the Unique SQL Server index ...

  2. 又来说一下顺序~关于唯一索引和唯一约束的顺序

    上次说了同一个对象里面不同触发器的执行顺序.今天我也想分享一些我在同一个表里面,建上不同的唯一约束,不同的唯一索引,看下结果会怎样 首先简单建个测试表,不多,就4列 CREATE TABLE AAA3 ...

  3. oracle 唯一索引,唯一约束,主键之间的联系

    主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录,在两个表的关系中,主键用来在一个表中引用来自于另一个表中的特定记录,,主键时一种唯一关键字,表定义的一部分. ...

  4. 主键,唯一索引,唯一约束三者之间的联系与区别

    主键本质是约束,值不为空,一个表只能建一个,其目的是检查数据的正确性: 唯一索引本质是索引,值可为空,一个表能建多个,其目的是实现数据查询的优化: 唯一约束本质是约束,值可为空,一个表能建多个,其目的 ...

  5. oracle 主键 唯一性,oracle 唯一索引,唯一约束,主键之间的联系

    主键(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录,在两个表的关系中,主键用来在一个表中引用来自于另一个表中的特定记录,,主键时一种唯一关键字,表定义的一部分. ...

  6. mysql删除表中的唯一索引吗_Mysql 使用sql删除同表中重复数据并加唯一索引

    同一张表中,假设以两个字段做唯一业务,这两个字段分别为key1,key2, 则以这两个字段为唯一 DELETE tablename FROM tablename , ( SELECT min(id) ...

  7. 【翻译】SQL Server索引进阶:第八级,唯一索引

    原文地址: Stairway to SQL Server Indexes: Level 8,Unique Indexes 本文是SQL Server索引进阶系列(Stairway to SQL Ser ...

  8. 【译】SQL Server索引进阶第八篇:唯一索引

    索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其效果适得其 ...

  9. 【译】索引进阶(八):SQL SERVER唯一索引

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 在本章节我们检查唯一索引.唯一索引的特别之处在于它不仅提供了性能益处,而且提供了数据完整性益处.在SQL SER ...

最新文章

  1. 蚂蚁金服自研的OceanBase升级到2.0了,据说性能……
  2. 浏览器加载本地html页面,在浏览器字段中加载本地HTML文件时是否显示白屏?
  3. mysql dba系统学习(2)了解mysql的源码目录及源文件
  4. linux mint 安装php,使用apt-get方式为Linux Mint 13安装PHP+MYSQL+Apache
  5. 看我出招之:svchost.exe文件删不得
  6. XP下安装SQL2000企业版
  7. 《终极海报——23位创意大咖的设计评论与思想》—埃伦 • 勒普顿
  8. android标题栏上增加按钮,Android:向自定义标题栏添加按钮
  9. 定时任务及分布式定时任务注意事项
  10. [bowen干货-5分钟算法系列]简洁不废话的排序算法-直接选择排序
  11. 三极管场效应参数全集
  12. 51单片机数码管静态显示
  13. 数据库密码忘了如何修改
  14. 诺基亚 and 微软,两只大象能否共舞?
  15. 游戏开发物语方案点数分配_游戏开发物语攻略 游戏开发物语新手须知技巧
  16. springboot基于web的传染病信息管理系统的设计与实现毕业设计-附源码221124
  17. sinx泰勒展开_高考中怎么用泰勒公式?
  18. 从今起,我蹲马步,苦练基本功
  19. 如何修复Word文档XML提示
  20. cmd打开时提示“系统找不到指定的路径”“the system cannot find the path specified”

热门文章

  1. VUE 入门及应用 ( 五 ) ElementUI 组件
  2. 10万以内数字转换为中文小写
  3. 网络编程及三大协议(TCP + UDP + Http)
  4. Packet Tracer - 在 VTY 线路上配置 IPv4 ACL
  5. 学术生涯中曾经的小目标
  6. 《人人都是产品经理》总结
  7. QT QTextEdit 控件响应回车键
  8. MyBatis-Plus--开胃菜
  9. CesiumForUnreal之UE世界坐标与WGS84经纬度坐标转换原理与应用
  10. talib中的MACD指标用法总结【TA-lib的macd返回值的含义】