V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
superwhite
V2EX  ›  程序员

问下大家,日常工作中,在数据库增加了冗余字段和派生字段的时候,对这些字段数据的维护是放到应用层还是使用触发器进行?

  •  
  •   superwhite · 2020-04-12 18:51:16 +08:00 · 1939 次点击
    这是一个创建于 1715 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对数据完整性肯定有要求,一般我都是在应用层进行维护,但是易出疏漏,特别是需求变更时。很多 bug 都是因为字段没有维护到暴露的。今天看到别的地方有推荐使用触发器进行维护的,所以想问问各位大佬都是怎么维护这些字段的,感谢。

    8 条回复    2020-04-13 09:51:49 +08:00
    tomczhen
        1
    tomczhen  
       2020-04-12 19:11:44 +08:00 via Android
    别的我不懂,别用触发器。
    superwhite
        2
    superwhite  
    OP
       2020-04-12 19:29:17 +08:00
    @tomczhen 是因为跟运维沟通成本高和维护成本高吗?但是应用层处理的话,多人开发的话,有时候维护不到,就容易出 bug,这个有什么好办法吗?
    veike
        3
    veike  
       2020-04-12 20:17:53 +08:00
    在应用层可以使用观察者模式处理,不知道可否解决的楼主所说的问题。
    veike
        4
    veike  
       2020-04-12 20:23:05 +08:00
    还有就是多人开发的话,需要定规范。我们公司没啥规范,这种数据处理的逻辑代码写的特别的散,我无能为力。

    我个人处理这种情况一般是把数据处理封装到一个对象的某个方法中,在处理该数据的时候 统一使用该方法。
    如果是那种从来不封装数据处理方法的项目,都是写的非常零散的 SQL 语句我是真无能为力。而且我们公司的后端都这么写项目,他们就是一把梭,写的贼快,但是维护起来真难。
    项目都没有文档,而且 业务流程也没有文档。 只能靠口口相传,然后他们很多时候就把业务逻辑给忘了,搞的很尴尬。
    foam
        5
    foam  
       2020-04-12 20:23:24 +08:00 via Android
    楼上同学说的观察者,类似 canel 的工具就是很好的提现
    zhaorunze
        6
    zhaorunze  
       2020-04-12 20:24:27 +08:00
    字段没有维护到位是人的问题,要不就是需求太急要不就是程序员粗心。很久没听过触发器是啥玩意了,建议看看阿里开发手册,按照上面的来。
    foam
        7
    foam  
       2020-04-12 20:52:56 +08:00 via Android
    canal 。上面拼错了
    God365
        8
    God365  
       2020-04-13 09:51:49 +08:00
    @tomczhen 严重同意

    如果只有一两个触发器还凑合,你的说的日常工作中加字段用触发器补数据,等后继维护内容多了产生一大把触发器会有你哭的时候
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1601 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.