2016-08-29 13 views
0

このような場合のformat()の使用法は、一般的に互換性がありますか?Postgresのformat()の使用

exec_str := format('UPDATE ' || TG_ARGV[0] || 
        ' SET username = current_user, 
           time = current_timestamp::timestamp(0);' 
       ); 
EXECUTE exec_str; 

機能format()の主な利点は、あなたがパラメータを使用することができるということです対

exec_str := 'UPDATE ' || TG_ARGV[0] || 
        ' SET username = current_user, 
           time = current_timestamp::timestamp(0);' 
        ; 
EXECUTE format(exec_str); 
+0

それぞれ試しましたか? –

+0

はい、両方とも動作します。私は、変種の1つがエラーを生成するかどうかを知りたいだけです。これまでのところ問題はなかった。申し訳ありませんより安全です; – andehhh

答えて

2

execute format(' 
    UPDATE %I 
    SET username = current_user, 
     time = current_timestamp::timestamp(0);', 
    TG_ARGV[0]); 

the documentationでもっとお読みください。

+0

['EXECUTE ... USING ...'](https://www.postgresql.org/docs/current/static/plpgsql-statements.html)を使用する方が良いでしょうか? #PLPGSQL-STATEMENTS-EXECUTING-DYN)それはどうですか? –

+0

@LaurenzAlbe 'USING'は、(元の質問のような)識別子ではなく、値だけをバインドすることができます。 – pozs

+0

おっと、そうです。 –

関連する問題