PostgreSQL 逻辑删除保证数据唯一

PostgreSQL About 441 words

场景

有用户表(usernamedel_flag),保证用户名唯一。

方案一

username唯一索引,逻辑删除后不能再新建相同名称的用户。

方案二

username - del_flag联合唯一索引(del_flag是布尔类型),第二次删除数据库会抛出异常。

方案二

username - del_flag联合唯一索引(del_flag是时间类型或文本类型),未删除的用户del_flag为固定值,删除时设置del_flag为最新的时间戳。

方案四(推荐)

username唯一索引,删除用户后插入到user_deleted表备份。

实现

使用with语句,delete的同时insert到备份表中。

with cte as
    (
        delete from sys_user where username = 'admin' returning *
    )
insert into sys_user_deleted select * from cte;
Views: 632 · Posted: 2023-11-20

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh