PostgresのCOMMENT ONステートメントを準備することはできますか?準備されたステートメントを使用してPostgreSQLのテーブルコメントを作成する
ユーザーがテーブルを作成できるプログラムがあります。私は彼らにテーブルの内容の説明を追加するオプションを与えたいと思います。このデータはユーザーからのものであるため、私は準備済みのステートメントを使用したいと思います。ルビーと「pg」宝石を使用して
、私はセットアップに以下の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文字列の操作に頼るべきです。それが事実ですが、これについて最善の方法は何ですか?データは敏感でも批判的でもなく、正しく表現された引用符とアポストロフィに関心があります。
ありがとうございます。
私は多くの疑念を抱いていますが、ドキュメントへのリンクをありがとうと非常に役に立ちます。 – Nossidge