Postgres sqlx 准备好的语句,表名称为bindvar

moe*_*sef 5 sql postgresql prepared-statement go

我正在尝试使用 Golang sqlx 库创建一个准备好的语句。我想让表名是一个bindVar

stmt, err := stmtTx.Preparex("SELECT * FROM $1 WHERE question_id=$2;")
Run Code Online (Sandbox Code Playgroud)

然而,这给了我一个语法错误/$1/。我可以不使用绑定变量作为表名吗?

Emi*_*yan 6

我可以不使用绑定变量作为表名吗?

不,引用来源。

参数只能用作数据值,不能用作标识符。因此,例如这是合理的:

INSERT INTO mytable VALUES ($1);
Run Code Online (Sandbox Code Playgroud)

但这是行不通的:

INSERT INTO $1 VALUES (42);
Run Code Online (Sandbox Code Playgroud)

fmt.Sprintf但如果需要,您可以使用表名称,但保留 $1、$2、... 作为数据值。