続・CreateTableの罠

エントリ書いたら、よろず相談なid:tagui99さんから
ありがたい情報頂いた。
以下の通りですw

[15:44:03] tagui99: windows版のpostgresql

postgres=# select version();
version

                                                                                                                        • -

PostgreSQL 8.4.1, compiled by Visual C++ build 1400, 32-bit

postgres=# create table TEST(d_id integer, name char(10));
CREATE TABLE

postgres=# \d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者

                                                                      • -

public | test | table | postgres
(1 行)

小文字で作られている。

postgres=# select * from test;
d_id | name

                        • -

(0 行)


postgres=# select * from "TEST";
d_id | name

                        • -

(0 行)

postgres=# select * from "TEST";
ERROR: リレーション"TEST"は存在しません
行 1: select * from "TEST";

" で囲むと大文字、小文字が意味をなす。
囲まなければ、暗黙で小文字変換。
[15:44:25] tagui99: 結果が違う><
[15:47:25] tagui99: 大文字のテーブルつくりたければ、" で囲むと出来る。

postgres=# create table "MASTER"(i_id integer);
CREATE TABLE
postgres=# \d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者

                                                                          • -

public | MASTER | table | postgres
public | test | table | postgres

MASTER と大文字になっていることが分かる。
[15:51:15] tagui99: これでつくると、アクセス時は、" で囲まないとアクセスできない。。小文字になっちゃうから。。変換されて
[15:51:19] tagui99: postgres=# select * from MASTER;
ERROR: リレーション"master"は存在しません
行 1: select * from MASTER;
^
postgres=# select * from master;
ERROR: リレーション"master"は存在しません
行 1: select * from master;
^
postgres=# select * from "MASTER";
i_id

          • -

(0 行)
[16:15:21] こげっち(BlackyMan): ダブルクォーテーションかぁ、なるほど
[16:15:29] こげっち(BlackyMan): 情報アザースw


ということで、Windows版のPostgreSQLで大文字のテーブル名を使いたいときは
『"(ダブルクォート)』で囲むといいらすぃ
また、1つ勉強になりましたwww


なので、こちらで情報共有w


やっぱ、エンジニアとしてこのくらい調べないとね^^;
日々精進です><
id:tagui99さん、情報有難う御座いました


追伸:

WindowsLinux関係なく、Postgre君の仕様らしぃ^^;; 前パッケージソフトの移行話しの際にEDB担当者と調べてたけど。

とのことらすぃ。。。