sql - 在具有唯一性条件的列上创建唯一约束
问题描述
假设我有一个包含 3 列的表:
CREATE TABLE some_table(
id BIGSERIAL PRIMARY KEY,
name text NOT NULL,
some_boolean boolean DEFAULT TRUE
);
我想在“名称”列上创建一个唯一约束,但它只需要在所有具有some_boolean = true
. 例如,如果我有一个名为 as 的条目banana
,some_boolean
我false
可以创建另一个也称为banana
.
更具体地说:我的表有一个expiration_date
列,我需要名称在所有未过期的对象中是唯一的
解决方案
条件唯一约束可以使用条件唯一索引来实现,如下所示:
CREATE UNIQUE INDEX some_table_Unq ON some_table (name) WHERE (some_boolean = TRUE);
你可以some_boolean = TRUE
用some_boolean
和 在你的情况下用expiration_date is null
推荐阅读
- android - 反应原生 - 找不到builder.jar(com.android.tools.build:builder:3.1.4)
- python - 如何将嵌套列表转换为数据框?
- php - Laravel 数据库无法在本地系统上使用 xampp
- python - 计算字符串中字母的频率(Python)
- c - 如何可移植地将双数据类型写入 C 中的文件
- sql - 创建和连接临时表
- react-native - 使用 Expo 响应导航 v3.x 和推送通知侦听器
- jquery - 反应重定向帖子
- r - 如何使用不同/相同的变量正确地从宽格式移动到长格式
- javascript - .on 只检测第一个变化