PostgreSQL 中的EXCLUDE 约束
226 字
1 分钟
PostgreSQL 中的EXCLUDE 约束
项目登录可以使用第三方账号进行登录,用第三方账号登录在数据库层面即插入一条新的记录,解绑即delete=1,软删除,当使用其他账号进行绑定的时候,如果直接进行插入,原有的唯一键会阻止插入新的记录,UNIQUE (platform, third_party_user_id, app_name);
但是如果使用postgreSQL中的exclude约束就可以灵活处理这个问题
CREATE TABLE user_third_party_registration (
...
deleted SMALLINT NOT NULL DEFAULT 0,
CONSTRAINT uq_user_third_party_active
EXCLUDE (platform WITH =, third_party_user_id WITH =, app_name WITH =)
WHERE (deleted = 0) -- 只对 deleted=0 的行生效
);代表只有当deleted = 0时,唯一约束(platform、third_party_user_id、app_name)才会生效
此时,解绑后插入新的数据,就可以成功插入,deleted=0 的记录始终唯一,deleted=1 的只是暂时被约束忽略,从而实现灵活绑定与解绑
PostgreSQL 中的EXCLUDE 约束
https://putao.ink/posts/backend/postgresql-中的exclude-约束/相关文章智能推荐
1
jwt、session、token、cookie
后端之前实习的时候被问到session和cookie的区别,答得比较浅,本篇笔记用来透彻的学习相关知识
2
http到https
后端前面学习的关于https的内容比较零碎,没有串起来,这篇学习笔记主要是按递进关系来记录,便于记忆和复习
3
grpc和protobuf学习笔记
后端结合项目学习grpc与protobuf的学习笔记,主要关注是是什么与如何用
4
codex记忆系统学习笔记
Agent关于codex的memory如何生成记忆、如何整理记忆、新对话召回记忆、与cc 的记忆系统的区别
5
transformer学习笔记
机器学习系统性学习transformer
随机文章随机推荐
