Files
workspace/code/base-project/base-go-v2/internal/db/delete.go
T
2025-11-04 17:32:32 +08:00

62 lines
1.1 KiB
Go

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
}