用触发器自动重算总额,守住数据完整性
Database trigger recalculates totals, for data integrity
这是导读,不是翻译。先用 1 分钟拿到这篇的核心,值得的话再去读 英文原文 →
核心观点
西弗斯曾因新代码绕过旧函数直接改数据库,导致库存和财务出错。他主张把“明细变了就重算总额”这类数据逻辑写成 PostgreSQL 触发器,无论谁改数据,相关字段都会自动更新。
要点
- 数据逻辑应与数据绑定,而不是散落在应用代码里
- 触发器要同时照顾新增、修改和删除,删除最容易漏
"put your crucial code in the database itself" —— Derek Sivers,查看原文 →
对你意味着什么
有脚本、后台、API 多个入口写数据的项目,最容易账不平。先把金额、库存这类错了会出大事的字段交给触发器守护。代价是逻辑藏在数据库里,注释和文档要跟上。
同主题推荐
- 为什么你的网站该有一个 /now 页面 —— 一页写清「我最近在忙什么」,也是拒绝的底气
- 用互联网,而不只是用平台 —— 平台来来去去,你的网站和联系方式才长久
- 用了两年 Rails,我为什么回到 PHP —— 新语言显得更好,往往只是因为你变强了