我正在使用pgx库在 Go 中填充 Postgres 数据库。
// this works
tblinsert = `INSERT into tablename (id, body) VALUES ($1, $2) RETURNING id`
var id string
err := Connector.QueryRow(context.Background(), tblinsert, "value1", "value2").Scan(&id)
问题:我也想将表名作为变量提供给查询,例如将tblinsert更改为
INSERT into $1 (id, body) VALUES ($2, $3)
问题:上面的代码出错并在我运行时返回“$1”或附近的语法错误(SQLSTATE 42601)”:
//this errors out err := Connector.QueryRow(context.Background(), tblinsert, "tablename", "value1", "value2").Scan(&id)`.
我不完全理解为什么错误消息甚至引用了$
占位符 - 我希望查询在这里进行字符串替换,就像 VALUES 一样。
我在这里和这里的纯 SQL 中发现了类似的问题,所以不确定这是否可能。.
任何关于我哪里出错的指针,或者我可以在哪里了解更多关于$x
语法的指针(我得到了上面的工作Sprintf
,但这似乎不鼓励)非常感谢 - 我对 SQL 和 Go 都很陌生。