Geen omschrijving
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

validate_result_rows_affected.go 741B

123456789101112131415161718192021222324252627282930313233
  1. package dao
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "git.x2erp.com/qdy/go-base/logger"
  6. )
  7. // ValidateResultRowsAffected 检查执行是否真正成功
  8. func ValidateResultRowsAffected(result sql.Result, err error, count int) (int64, error) {
  9. if count == 0 {
  10. return 0, err
  11. }
  12. if err != nil {
  13. return -1, err
  14. }
  15. // 获取受影响的行数
  16. rowsAffected, err := result.RowsAffected()
  17. if err != nil {
  18. return -1, fmt.Errorf("获取行数失败: %w", err)
  19. }
  20. logger.Debug("成功操作 %d 行", rowsAffected)
  21. // 严格校验:确保插入的行数与记录数匹配
  22. expectedRows := int64(count)
  23. if rowsAffected > expectedRows {
  24. return -1, fmt.Errorf("预期 %d, 实际 %d", expectedRows, rowsAffected)
  25. }
  26. return rowsAffected, err
  27. }