Cualquier buena biblioteca debe proporcionar un escape adecuado para los nombres de SQL, que incluyen:
- nombre del esquema
- nombre de la tabla
- nombre de la columna
Por ejemplo, dentro de pg-promise lo usaría así:
db.query("INSERT INTO $1~ VALUES ($2, $3, $4)", [table_name, value_a, value_b, value_c])
es decir, obtiene el nombre de su tabla correctamente escapado agregando la variable con ~
, que a su vez lo protege de la inyección SQL.
A partir de aquí, un simple escape para nombres de tablas ejecutado por la biblioteca:
return '"' + name.replace(/"/g, '""') + '"';
Ver también:Nombres SQL