V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
27
V2EX  ›  问与答

不做显式删除,而用 status=0 代替,是好的实践么?

  •  
  •   27 · May 23, 2017 · 6111 views
    This topic created in 3272 days ago, the information mentioned may be changed or developed.

    这样一来,用代码生成器生成的 sql 语句全部都不能用,都得重新写

    觉得十分麻烦,大家都是这样用的吗?

    26 replies    2017-05-24 18:09:01 +08:00
    mkeith
        1
    mkeith  
       May 23, 2017
    一般 orm 支持软删除的吧
    shiny
        2
    shiny  
    PRO
       May 23, 2017
    BOSS:小王,把上次删除的恢复下
    shiny
        3
    shiny  
    PRO
       May 23, 2017
    记得很久以前看到过一个观点:真实世界是没有删除的。订单作废,用户禁用,员工离职,文稿废弃,优惠券作废。所以 SQL 里面 DELETE 在业务场景里都不应该出现。
    U7Q5tLAex2FI0o0g
        4
    U7Q5tLAex2FI0o0g  
       May 23, 2017
    挺好的
    murmur
        5
    murmur  
       May 23, 2017
    如果是面试的话应该是大量删除触发索引重建,而现在数据库空间不值钱索引重建一次卡的 cpu 和 io 值钱
    shoaly
        6
    shoaly  
       May 23, 2017
    laravel 在 orm 里面 是不会查询出软删除的数据的.
    提供一次后悔的机会.. 万一呢, 万一傻逼了呢
    otakustay
        7
    otakustay  
       May 23, 2017
    你只要理解数据比钱更值钱,就明白要怎么做了
    F281M6Dh8DXpD1g2
        8
    F281M6Dh8DXpD1g2  
       May 23, 2017
    数据都删了还分析啥
    ovear
        9
    ovear  
       May 23, 2017
    第一是安全。。第二是恩。。你懂得
    CodeDrift
        10
    CodeDrift  
       May 23, 2017
    很想知道 django 有没有这个软删除。。
    helloworldwt
        11
    helloworldwt  
       May 23, 2017
    一般都是逻辑删除,不实际删除的。在数据库里使用一个状态来表示
    zyue
        12
    zyue  
       May 23, 2017
    我建的表都有个 is_deleted tinyint 字段
    wc951
        13
    wc951  
       May 23, 2017 via Android
    那要看是什么数据了,也不是所有业务场景都需要留着过期数据
    yghack
        14
    yghack  
       May 23, 2017
    生产环境不能有 DELETE 权限
    zhenjiachen
        15
    zhenjiachen  
       May 23, 2017
    deletedAt 日期格式,这个字段好一点,你 status 不知道什么时候删除的,查询直接使用 deletedAt is not null 就好
    ixo
        16
    ixo  
       May 23, 2017
    必要
    @zhenjiachen 我一般是配合 updateAt 这个字段判断删除时间。
    solee
        17
    solee  
       May 23, 2017
    很好啊 我们也是配合 updatedAt 字段使用 软删除
    Mogugugugu
        18
    Mogugugugu  
       May 23, 2017
    逻辑删除,不会无理删除的.一方面避免误操作,另一方面 数据无价,无论用来干啥...
    cloverstd
        19
    cloverstd  
       May 23, 2017
    软删除,多对多联查的很麻烦啊
    Ouyangan
        20
    Ouyangan  
       May 23, 2017
    你改下 代码生成器
    mingyun
        21
    mingyun  
       May 23, 2017
    laravel 使用 deleted_at 表示软删除
    ihuotui
        22
    ihuotui  
       May 24, 2017 via iPhone
    没有删除权限 并发删除会死锁 索引会重建
    msg7086
        23
    msg7086  
       May 24, 2017
    @shiny 真实世界里,敏感的文书需要绞碎,敏感的磁盘需要砸烂,不该留下的照片需要烧掉……
    geelaw
        24
    geelaw  
       May 24, 2017
    一些法律法规要求数据必须保留一段时间以供文书提出。例如

    http://baike.baidu.com/item/%E5%85%AC%E5%AE%89%E9%83%A8%E4%BB%A4%E7%AC%AC82%E5%8F%B7

    公安部令第 82 号第十三条,要求数据至少保留 60 日。
    orvice
        25
    orvice  
       May 24, 2017
    以前公司,线上程序 99%的地方,都不会有 delete 权限,业务上全部用 status 来做删除

    你要 delete 权限的时候要越过 leader,dba2 座大山。。
    shiny
        26
    shiny  
    PRO
       May 24, 2017
    @msg7086 在自己的业务系统里,出现这种情况的概率几乎为 0。 现在的观点是 DELETE 被滥用了,并非绝对不应该使用 DELETE。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3435 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 12:00 · PVG 20:00 · LAX 05:00 · JFK 08:00
    ♥ Do have faith in what you're doing.