首页 > 其他分享 >关于逻辑删除

关于逻辑删除

时间:2024-07-20 16:39:56浏览次数:12  
标签:逻辑 手机号 删除 唯一 索引 关于 time delete

逻辑删除

    • 传统:

      • 在数据库上加一个字段:deleted/delete_time/delete_at 或者还可以使用状态表(新建一个表来专门存状态) 还有视图(将未删除的数据专门拿出来查询)/触发器(在执行删除操作时自动改为执行逻辑删除)等实现方式
      • 在实体类上添加字段
      • 修改sql
        • 对于条件的判断全都加上该字段
        • 在查询时添加
        • 删除改为更新该字段的值
    • mp:

      • 在数据库上加一个字段:deleted/delete_time/delete_at
      • 在实体类上添加字段 在该字段上加上@TableLogic
      • 在application上配置:mybatis-plus.gloabl-config.db-config.logic-delete=1 mybatis-plus.gloabl-config.db-config.logic-delete=1
    • 其中对于这几个字段

      • deleted 是布尔值 , 用0和1来区别
        • 但是如果表存在唯一索引,就会报错
        • 比如手机号,如果上一次,该手机号被删除了,这次再添加该手机号的用户,由于是逻辑删除,那么手机号重复了,就出错了
        • 所以这个字段适合于没有唯一索引的表
      • delete-time 是被删除时的具体的时间,如果没有被删除就是null
        • 这样的的话,将这个字段与那个唯一字段建立起唯一索引,只有这两个字段同时重复出现两次,才会出错,而删除的时间是几乎不会重复的。
        • 比如:还是手机号,当我们删除了第一次的记录,此时delete-time是时间数据,当我们再次插入时,由于delete-time不同,所以不会触发唯一索引的限制。这样就解决了唯一索引的问题。
        • 但是由于没有删除的数据的delete-time是null,两个null并不会被判定为相同,不会触发唯一索引。
        • 这也就导致了,手机号还没有被删除时,由于delete-time不同,再插入相同的手机号也不会被唯一索引识别。也就出现了手机号相同的两条数据且是同时生效的
      • delete-at 是被删除时的时间戳,若没有被删除就是0
        • 由于没有被删除时是0,不是null,两个0是可以被数据库的唯一性约束识别的,那么就解决了问题
        • 比如:手机号相同时,该手机号还没有被删除,第一条数据的delete-at是0,想要再插入一条数据,此时手机号相同,delete-at也相同,就无法插入,就解决了问题
        • 但是这个看不到删除的时间了。(这个需求其实可有可无)
      • delete-at与delete-time同时使用。
        • 这样即可以保证唯一索引,也可以实现看到时间。

标签:逻辑,手机号,删除,唯一,索引,关于,time,delete
From: https://www.cnblogs.com/ximenheiniu/p/18313356

相关文章

  • 【渗透测试系列】常见网站的逻辑漏洞checklist
    前言在做网站渗透之前除了关注一些通用漏洞,这些漏洞通常能很容易的利用扫描器扫出,被WAF所防护,然而有一些逻辑漏洞WAF和扫描器就无法发现了,就需要人工来测试,根据各行业的特点总结了下网站的常见漏洞checklist。互联网行业P2P金融行业电商行业政务行业​......
  • 离散数学——6.命题逻辑的应用
    命题逻辑的应用自然语言命题的符号化为什么要将自然语言命题符号化?自然语言命题转换为逻辑公式的过程也称为自然语言命题的符号化是将命题逻辑知识(等值演算和推理理论)用于求解应用问题的第一步$p→q的逆命题是q→p$$p→q的否命题是¬p→¬q$$p→q的逆否命题是¬q→¬p$......
  • 代码随想录day4 | 24 两两交换链表节点 19 删除倒数第n个节点 142 环形链表
    24两两交换节点funcswapPairs(head*ListNode)*ListNode{ //思路涉及到链表增删改操作,优先考虑使用虚拟头节点此处为双指针加上虚拟头节点 ifhead==nil||head.Next==nil{ returnhead } vardummyHead=&ListNode{0,head} varprev=dummyHead forp......
  • Anroid 11 关于NotificationManager && NotificationManagerService
    frameworks/base/core/java/android/app/NotificationManager.java几个比较重要的函数://移除mContext.getUser发送的通知publicvoidcancel(@NullableStringtag,intid){cancelAsUser(tag,id,mContext.getUser());}//移除所有通知publicvoidcanc......
  • 离散数学——4.命题逻辑公式的范式
    命题逻辑公式的范式析取范式与合取范式析取范式是一个或多个简单合取式的析取•简单合取式是一个或多个文字的合取文字(literal)是命题变量或命题变量的否定合取范式是一个或多个简单析取式的合取•简单析取式是一个或多个文字的析取析取范式举例单个文字既是简单合取式......
  • 离散数学——5.命题逻辑的推理理论
    命题逻辑的推理理论推理的有效性推理是从一组作为前提的命题得到一个作为结论的命题的过程推理的有效性并不保证结论真,有效的推理没要求所有的前提都必须为真有效推理的保真是针对从前提得到结论这个过程,从真前提必得到真结论但前提和结论本身是否为真是另外一回事,与推理是......
  • 关于线段树优化建图
    线段树优化建图引入对于这道板子题但是我不会大概意思就是:有\(n\)个点、\(q\)次操作。每一种操作为以下三种类型中的一种:连一条\(u→v\)的有向边,权值为w对于所有\(i∈[l,r]\)连一条\(u→i\)的有向边,权值为\(w\)对于所有\(i∈[l,r]\)连一条\(i→u\)的......
  • 7.20解决hive无法删除和修改的问题
    参考文献:hiveupdate和delete报错Attempttodoupdateordeleteusingtransactionmanager-CSDN博客 首先说明,hive数据库一般是增和查询用得比较多,不建议频繁的去修改删除,有悖hive数据库的初衷。废话不多说,开始配置,首先找到你的hive-site.xml的路径 一般来说是在hive的......
  • 离散数学——3.命题逻辑的等值演算
    命题逻辑的等值演算命题逻辑公式的逻辑等值称命题逻辑公式A和B逻辑等值(logicallyequivalent),简称等值,记为A≡B,如果对任意真值赋值函数$σ:Var→2$,A和B在σ下的真值都相同,即都有σ(A)=σ(B)逻辑等值式与永真式:A≡B当且仅当公式(A↔B)是永真式命题逻辑的等值演算什么是命题......
  • 离散数学——2.命题逻辑公式语法和语义
    命题逻辑公式语法和语义命题逻辑基本概念命题及其真值对事物性质或关系进行判断,有真假值的陈述句非陈述句(感叹句、疑问句、祈使句)不是命题带变量的句子、认为是悖论的句子,没有真假值,不是命题命题的真值包含两个值,一个为真(true),一个为假(false)使用0或F表示假,1或T表......