新しいパソコンが Windows8 なので 自分の公開しているツールが動くかどうか試してみました。
VB5,6 の基本ライブラリしか使用していないので そこさえサポートしてくれていれば動くと思いましたが ちゃんと動きました。
デザインやら色々変わって使いにくいと感じることもありますが この辺りの互換性に関しては すごいと思います。
PostgreSQL にはデータベースのデフォルトの表領域があります。 テーブルなどのデータベースのオブジェクトを作成するときに 表領域を指定しなければ、そのデータベースのデフォルトの表領域に作成されます。
次の場合、データベース database1 は tablespace1 を デフォルトの表領域として設定しています。
db=# \x Expanded display is on. db=# \l+ List of databases -[ RECORD 1 ]-----+-------------------------- Name | database1 Owner | postgres Encoding | UTF8 Collation | en_US.UTF-8 Ctype | en_US.UTF-8 Access privileges | Size | 51 MB Tablespace | tablespace1 Description |
このデフォルトの表領域の変更ですが PostgreSQL の 8.4 からは ALTER DATABASE 文で 行うことができます。
db=# ALTER DATABASE database1 SET TABLESPACE tablespace2;
これで表領域が tablespace2 になります。
db=# \l+ List of databases -[ RECORD 1 ]-----+-------------------------- Name | database1 Owner | postgres Encoding | UTF8 Collation | en_US.UTF-8 Ctype | en_US.UTF-8 Access privileges | Size | 51 MB Tablespace | tablespace2 Description |
データベースクラスタのデフォルトの表領域に変更する場合は 次のように表領域に pg_default を指定します。
db=# ALTER DATABASE database1 SET TABLESPACE pg_default;
8.4 までは createdb コマンドを使って次のように 変更したりしていたんですが、バージョンアップの内容も 追いかけておかないと 新しいバージョンを使ってるメリットを享受できないですね。
$ createdb -T database1 -D pg_default database2;
PostgreSQL の PL/pgSQL のトリガーで 以下のようなエラーがでることがあります。
ERROR: cross-database references are not implemented: test.table1.column1 CONTEXT: compilation of PL/pgSQL function "test_af_chg" near line 4
原因のひとつとして、PL/pgSQL プログラム内の 変数の定義で %TYPE が抜けてる場合があります。
DECLARE wk_column1 test.table1.column1;
この場合、上記のエラーがでます。
正しくは、下のようになります。
DECLARE
wk_column1 test.table1.column1%TYPE;
意外と気づきにくいです。
メモです。
WindowsXP なで作業していると ファイルサーバからネットワーク越しにファイルをコピーしようとしたときに 「このゾーンからファイルを移動したり、コピーできるようにしますか?」と 警告が出ることがあります。
この場合、エクスプローラの右下に表示されるゾーンが 「インターネット」になっています。
このゾーンを「イントラネット」にすれば 警告が出なくなります。
まず、インターネットオプションを開きます。
セキュリティタブで 「イントラネット」のアイコンをクリックして 「サイト」ボタンを押します。
「詳細設定」ボタンを押します。
「次の Web サイトをゾーンに追加する」に ファイルサーバの IP アドレスを入れます。 ワイルドカードが使えるので 「192.168.1.*」のようにまとめて指定することもできます。
あとは「OK」ボタンを押して、パソコンを再起動します。
ファイルサーバのゾーン表示が「イントラネット」に変わりました。 (画像を撮った環境が違うのでウィンドウのデザインが違いますが気にしないでください)
これで警告が出なくなりました。
ORACLE には ROWNUM という擬似列があって 結果セットに番号を振って取得することができます。 (ORDER BY に影響を受けるので順番に番号が付かないこともありますが)
PostgreSQL ではウィンドウ関数(window function)を使うと 同じようなことができます。
次のような感じです。
db=# SELECT (ROW_NUMBER() OVER()) AS rownum, f1 FROM table1; rownum | f1 --------+---- 1 | A 2 | B 3 | C 4 | D 5 | E (5 rows)
ちなみにウィンドウ関数は 標準SQL に規定されているもので PostgreSQL のみにある考え方ではありません。
新しいパソコンが着たので
サイトの更新を再開します。
これからもよろしくお願いします。
1ヶ月ぶりの更新です。
実はサイトを更新していたパソコンが壊れてしまい サイトの更新が止まっています。 来てくださった方、更新がなく申し訳ありません。
もうすぐ新しいパソコンが来るので 更新を再開します。 再開したら またよろしくお願いします。