Qualquer boa biblioteca deve fornecer escape adequado para nomes SQL, que incluem:
- nome do esquema
- nome da tabela
- nome da coluna
Por exemplo, dentro do pg-promise você usaria assim:
db.query("INSERT INTO $1~ VALUES ($2, $3, $4)", [table_name, value_a, value_b, value_c])
ou seja, você obtém o nome da sua tabela com escape adequado anexando a variável com
~
, que por sua vez o torna seguro contra injeção de SQL. A partir daqui, um simples escape para nomes de tabelas executados pela biblioteca:
return '"' + name.replace(/"/g, '""') + '"';
Veja também:Nomes SQL