2016-08-29 14 views
0

結果はquote_ident(table_name::text)となり、パイプライン文ではなくテーブルを渡すとどういう違いがありますか?例えばのために は関数の戻り値の差

CREATE TRIGGER audit_trigger_stm AFTER ' || stm_targets || ' ON ' || quote_ident(table_name::text) ... 

この

CREATE TRIGGER audit_trigger_stm AFTER ' || stm_targets || ' ON ' || table_name ... 
+0

あなたはそれをどのように使いたいかの例で展開できますか? * pipeline statement *は何を意味しますか? –

+0

はい、私は例を挙げました – user6770216

+0

この文脈では式は使用できません。 [syntaxt](https://www.postgresql.org/docs/9.5/static/sql-createtrigger.html)は明確です: – klin

答えて

2

の間に違いがあるの違いquote_identを使用せずに構成文がtable_nameにスペース、二重引用符またはその他の細かな点が含まれている場合は無効になる(または予約済みであるということですSQLキーワード)。

さらに、quote_identを使用すると、信頼できないソースからのtable_nameの場合はSQLインジェクションから保護されます。