是否可以准备Postgres'COMMENT ON'声明?
我有一个允许用户创建表的程序。我想给他们添加表格内容描述的选项。由于这些数据来自用户,我想使用准备好的语句。
使用Ruby和'pg'gem,我使用下面的方法来设置Postgres连接和示例数据:
table_name = "test_shakespeare"
description = "Shakespeare's sonnets"
con = PG.connect(
:dbname => "poefy",
:user => "poefy",
:password => "poefy"
)
sql = "CREATE TABLE #{table_name} (example TEXT);"
con.exec(sql)
以下是我失败的方法,以及他们抛出的错误。
# ERROR: syntax error at or near "$1" (PG::SyntaxError)
sql = "COMMENT ON TABLE #{table_name} IS $1;"
con.exec(sql, [*description])
# ERROR: syntax error at or near "$1" (PG::SyntaxError)
sql = "COMMENT ON TABLE #{table_name} IS $1;"
con.prepare("comment", sql)
con.exec_prepared("comment", [*description])
# ERROR: could not determine data type of parameter $1 (PG::IndeterminateDatatype)
sql = "COMMENT ON TABLE #{table_name} IS '$1';"
con.exec(sql, [*description])
# ERROR: bind message supplies 1 parameters, but prepared statement "comment" requires 0 (PG::ProtocolViolation)
sql = "COMMENT ON TABLE #{table_name} IS '$1';"
con.prepare("comment", sql)
con.exec_prepared("comment", [*description])
似乎这种类型的语句不可能进行准备,我应该采用SQL字符串操作。既然如此,最好的方法是什么?数据不敏感或不重要,我只关心正确表示的引号和撇号。
提前致谢。
答案 0 :(得分:0)
答案 1 :(得分:0)
看来这是不可能的。
所以我选择了旧的“双引号单引号”方法。
min-height: 100%
这真的很酷。但是现在我把它标记为答案。
如果有更安全的方式,请告诉我。