#32394·Helm

SQL 存储驱动程序:事务和错误合约正确性问题

作者: Mukuwul创建于 2026年7月19日更新于 2026年9月12日

1. Create/Delete 通过 defer 提交并丢弃提交错误 - 无声数据丢失

Createdefer transaction.Commit() 结束,Delete 在其 DELETE 语句运行之前注册了相同的 defer。后果:

  • 如果提交失败(连接断开,服务器错误),Create 返回 nil,而释放记录从未被持久化;Delete 返回已删除的释放,而没有删除任何内容。
  • Delete 中,在 defer 之后的错误路径(自定义标签查找或删除失败)仍然 提交部分删除,同时报告失败 - 释放行已删除,标签孤立。