标准答案

  1. created_at 记录首次创建时间,通常只写一次;updated_at 记录业务行最后一次有效变更,避免被无意义触碰频繁改写。
  2. 时间应统一使用 UTC 或明确带时区的规范,并在应用边界完成展示转换,避免不同服务各自解释本地时间。
  3. deleted_at 用于表示软删除时间,NULL 与非 NULL 的语义要固定;需要恢复时还应记录恢复操作和冲突处理。
  4. version 用于乐观锁或变更检测,更新语句必须把旧版本作为条件,而不是只在内存中递增。
  5. 常见查询要配套索引,例如按租户和创建时间分页、只查未删除数据或按更新时间增量同步。

题目解析

审计字段最常见的失败是“有字段但不可用”:不同表混用秒和毫秒、某些更新不改 updated_at、软删除后查询忘加条件。这样的字段既不能帮助排查,也可能让增量同步遗漏或重复。

迁移期间尤其需要可追踪性。新增字段、回填批次、切流时间和回滚边界都应该能通过时间、版本或迁移标记确认,而不是靠人工回忆哪次脚本跑到了哪里。

常见误区

  • 把应用服务器本地时间直接写库,跨时区或夏令时切换后排序和排查出现歧义。
  • 软删除后只在部分查询加 deleted_at 条件,导致已删除数据重新出现在列表或统计里。

作者信息