Postgres は元々 UCB(カリフォルニア大学バークレイ校) コンピュ ータ・サイエンス学部で開発されたものですが、これは、いくつか の商用データベースにおいて現在使えるようになりつつある、多く のオブジェクト関連概念の先駆けとなるものです。Postgres では、 SQL92/SQL3 言語サポート、トランザクション機能、および拡張可 能な型といったものを提供しています。Postgres はパブリック・ ドメインのオープンソースで、オリジナルのバークレイ・コードか ら発展してきた子孫にあたります。
PostgreSQL は無料で利用できます。現在のバージョン はwww.PostgreSQL.org で入手可能です。
バージョン 6.3 (03/02/1998) からは、PostgreSQL は UNIX ドメイ ンソケットを使用しており、この新しい将来性に対する調理法が 用意されました。 このソケットは/tmp/.s.PGSQL.5432にありま す。このオプションはpostmasterに対して '-i' フラグを指定することで有効となります。これは "Unix ドメインソケッ ト以外の TCP/IP ソケットも listen する" という意味です。
表 1. Postmaster と PHP
Postmaster | PHP | ステータス |
---|---|---|
postmaster & | pg_connect("", "", "", "", "dbname"); | OK |
postmaster -i & | pg_connect("", "", "", "", "dbname"); | OK |
postmaster & | pg_connect("localhost", "", "", "", "dbname"); | Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php3 on line 20. |
postmaster -i & | pg_connect("localhost", "", "", "", "dbname"); | OK |
次のコマンドでも接続を確立することができます。 $conn = pg_Connect("host=localhost port=5432 dbname=chris");
ラージオブジェクト(lo)インターフェースを使用するには、その問 い合わせをトランザクション・ブロックの中に入れてやる必要があ ります。トランザクション・ブロックはbegin で始まり、そのトランザクションが有効な場合はcommit またはendで終わります。トランザ クションが失敗した場合は、そのトランザクションは abortまたはrollbackにより閉じら れなければなりません。
例 1. ラージオブジェクトを使う
<?php $database = pg_Connect ("", "", "", "", "jacarta"); pg_exec ($database, "begin"); $oid = pg_locreate ($database); echo ("$oid\n"); $handle = pg_loopen ($database, $oid, "w"); echo ("$handle\n"); pg_lowrite ($handle, "gaga"); pg_loclose ($handle); pg_exec ($database, "commit") pg_exec ($database, "end") ?>