Как обновить несколько строк с помощью sqlx? - PullRequest
0 голосов
/ 12 июня 2019

Я хотел бы обновить несколько строк в одном запросе:

//threadIDs is a variable length slice of integers like [3 5 6]
query := "UPDATE message SET recipient_deleted=? WHERE recipient_id=? AND thread_id IN ?"
_, err := database.SQL.Exec( query, 1, userID, threadIDs)
if err != nil {
    log.Fatal(err)
}

Но я получаю эту ошибку времени выполнения:

sql: converting argument $3 type: unsupported type []int, a slice of int

Как я могу это исправить?

1 Ответ

1 голос
/ 12 июня 2019

Вы можете использовать sqlx.In, который возвращает новый запрос и новый фрагмент args, которые вы затем используете вместо своих исходных значений, например:

query := "UPDATE message SET recipient_deleted=? WHERE recipient_id=? AND thread_id IN (?)"

qry, args, err := sqlx.In(query, 1, userID, threadIDs)
if err != nil {
    panic(err)
}

if _, err := database.SQL.Exec(qry, args...); err != nil {
    panic(err)
}
...