Как использовать переменную для получения другой таблицы с драйвером pgx?
Вот функция для получения французских пословиц:
func (r *proverbRepo) SelectFrByDegree(search string) (proverbs []domain.Proverb, err error) {
rows, err := r.Db.Query(context.Background(), `SELECT ID, proverb
FROM proverbs_fr
WHERE proverb % $1
ORDER BY proverb <-> $1 DESC LIMIT 5
`, search)
if err != nil {
return
}
for rows.Next() {
var prov domain.Proverb
err = rows.Scan(&prov.ID, &prov.Literal)
if err != nil {
return
}
proverbs = append(proverbs, prov)
}
return
}
Иногда я хочу получить другую таблицу пословиц из, скажем, таблицы proverbs_bzh. Можно ли получить другую таблицу с именем переменной?
SELECT * FROM $1
например...
1 ответ
Решение
Это не намерение связывать переменные. Его следует использовать для ввода данных при повторном использовании запроса. Если таблица неизвестна, запрос не может быть проанализирован и план выполнения повторно использован. Итак, ваш вариант - заменить строку.
Предупреждение: если имя таблицы получено из внешнего источника, убедитесь, что это правильный идентификатор (подсказка: защитить от SQL-инъекции)