[pgsql-jp: 35446] Re: pgAdminIIIでテーブル定義すると動作がおかしい
ISHIDA Akio
iakio @ mono-space.net
2005年 5月 31日 (火) 22:06:04 JST
こんにちは。石田@苫小牧市です。
masato.sakaguchi @ nifty.com wrote:
> こんにちは、坂口です。
> 藤沢さん、金井さん、ありがとうございます。
>
> 金井さんの指摘された件で謎がとけました。
>
>
>> pgAdminIIIは、オブジェクト名に半角小文字以外を指定すると、
>>自動でダブルクォーテーションを付加したDDLを生成するようです。
>
>
> pgAdminIIIの仕様が原因なのですね。
というわけでもありません。
まず元々の現象[pgsql-jp: 35442]
> たとえばCSEからtblTestというテーブルを見るときには以下のようになります。
> 成功 SELECT * FROM "tblTest";
> 失敗 SELECT * FROM tblTest;
これは、ダブルクォートで囲まれていない識別子(テーブル名など)は
すべて小文字として扱われるためです。
http://www.postgresql.jp/document/current/html/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS
上記URLにある通り、すべて小文字にするのは標準SQL準拠では
ありませんが、ダブルクォートされていない識別子は
大文字小文字同一視するという意味では標準に準拠しています。
pgAdminIIIがもしダブルクォートを付加しなければ、
tblTestというテーブルを作ったつもりでもtbltest (すべて小文字)が
作成されます。結果として
SELECT * FROM tblTest; は成功し、
SELECT * FROM "tblTest"; は失敗するでしょう。これは意図した
動作ではないと思います。
> 習慣でtblAdress、qryKanaOrderというようなルールでオブジェクトに名前付
> けしていました。
> ただ不可解なのはAccess2000にリンクしテーブルの一覧で見たときや、CSEの
> オブジェクト一覧では「"」が見えないことです。
> 特にAccess2000では、そのままリンクテーブルに読み書きできました。
> pgAdminの使い方を調べてみたのですが、この「"」を付加することを抑止する
> 方法が見つかりません。
> この「"」というのは、なにか根拠があって付けられているものなのでしょう
> か?
> 特に理由がないものなら、抑止できないかなぁ、と思います。
>
> masato.sakaguchi @ nifty.com 坂口真人
>
>
>
pgsql-jp メーリングリストの案内