package db import ( "fmt" ) // DeleteOne 根据主键删除单条记录 func DeleteOne(table string, pkColumn string, pkValue interface{}) (int64, error) { tx, err := DB.Beginx() if err != nil { return 0, err } query := fmt.Sprintf("DELETE FROM %s WHERE %s=$1", table, pkColumn) res, err := tx.Exec(query, pkValue) if err != nil { tx.Rollback() return 0, err } if err := tx.Commit(); err != nil { return 0, err } return res.RowsAffected() } // DeleteBatch 根据主键批量删除记录 func DeleteBatch(table string, pkColumn string, pkValues []interface{}) (int64, error) { if len(pkValues) == 0 { return 0, nil } tx, err := DB.Beginx() if err != nil { return 0, err } total := int64(0) for _, pk := range pkValues { query := fmt.Sprintf("DELETE FROM %s WHERE %s=$1", table, pkColumn) res, err := tx.Exec(query, pk) if err != nil { tx.Rollback() return 0, err } rows, err := res.RowsAffected() if err != nil { tx.Rollback() return 0, err } total += rows } if err := tx.Commit(); err != nil { return 0, err } return total, nil }