package db import ( "context" "fmt" "strings" ) func (c *Client) Delete(ctx context.Context, table, keyField string, data map[string]any) error { keyVal, err := validateData(table, keyField, data) if err != nil { return err } sql := fmt.Sprintf( "DELETE FROM %s WHERE %s = $1", quoteTable(table), quoteCol(keyField), ) _, err = c.pool.Exec(ctx, sql, keyVal) // ⭐修复 exec return err } func (c *Client) BatchDelete(ctx context.Context, table, keyField string, list []map[string]any) error { if len(list) == 0 { return fmt.Errorf("empty data") } var ( args []any in []string i = 1 ) for _, row := range list { v, err := validateData(table, keyField, row) if err != nil { return err } in = append(in, fmt.Sprintf("$%d", i)) args = append(args, v) i++ } sql := fmt.Sprintf( "DELETE FROM %s WHERE %s IN (%s)", quoteTable(table), quoteCol(keyField), strings.Join(in, ", "), ) _, err := c.pool.Exec(ctx, sql, args...) // ⭐修复 exec return err }