[pgsql-jp: 41721] Re: ユーザ名のダブルクォート

Tatsuo Ishii ishii @ sraoss.co.jp
2014年 9月 3日 (水) 11:57:02 JST


境田さん

石井です。

SQLの規格では、ユーザ名は識別子扱いで、シングルクォートで囲むとリテラル
になってしまうので、難しいと思います。
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp

> 境田と申します。
> 
> しばらくPostgreSQLから離れていましたので、初歩的な質問で
> 恐縮です。
> 
> 現在、PostgreSQL 8.4.20 を使用しています。ハイフォン付の
> ユーザ名のパスワード変更は次のようにダブルクォートで囲む
> 必要があります。
> 
> alter role "xxx-xxx" with password 'yyyyyyyy';
> 
> しかし、alte文全体をダブルクォートで囲む必要がある場合、
> ユーザ名をシングルクォートで囲むことができれば便利です。
> 
> 「ユーザ名をシングルクォートで囲む文法」を許さないという
> 理由はあるのでしょうか?
> 
> 可能ならば、PostgreSQLのバージョンアップ項目に追加してい
> ただきたいな〜と思っています。
> 
> ※ ユーザ名をシングルクォートで囲みたいという例
> 
>    bashスクリプト内で、expectを使用してpsqlの自動化を行う
>    場合などです。
> 
>   (一部抜粋)
>    expect -c "
>      set timeout 5
>      spawn su - $pgsql
>      send \"psql\n\"
>      expect \"パスワード:\"
>      send \"$passwd\n\"
>      expect \"$pgsql=# \"
>      send \"alter role $userid with password '$passwd';\n\"
>      send \"\\\q\n\"
>      send \"exit\n\"
>      interact
>    "
> 
> --
> SAKAIDA Masaaki
> 


pgsql-jp メーリングリストの案内