《《=[前の記事に] 《=[前ページ]       [次ページ]=》 [次の記事に]=》》


PostgreSQL6.5というバージョンをベースに記述されていますので,7.0にアップグレードした際に追加された機能などを中心にお話をしていきます.

2.1 pg_ctlコマンドの追加

以前のバージョンでは,postmaster(PostgreSQLのデータベースデーモン)を直接postmasterコマンドを記述して立ち上げ,killコマンド等を使ってpostmasterの停止等を行っていましたが,pg_ctlというコマンドが追加されました.このコマンドに引数を与えるだけで,postmasterの停止,起動,再起動などが行えます.指定出来る引数には以下のようなものがあります.
 
  start 起動
  stop 停止
  restart 再起動
  status ステータスの報告
 
更に,起動,停止の場合には-wというオプションがあり,起動,停止が終ってからプロンプトが戻って来るようになっています.特に停止の場合は,接続中のユーザがいるのに,強制的に切るのではなく,DBに接続しているユーザがいなくなったらpostmasterを終了させるというスマートシャットダウン機能が標準となっています.

2.2 to_char 関数群の追加

商用DBのOracle互換の関数としてto_char関数群が追加されました.
to_char関数の日本語マニュアルのURLを参考文献に記述しますので,詳しくはそちらを参照してください.

2.3 timestamp と datetime 

timestampもdatetimeも年月日時分秒を扱うデータ型です.6.5.3のバージョンまでは扱える範囲も広く,精度も高いということでdatetime型の利用が進められていましたが,7.0では,timestamp型を利用することが推奨されています.これはSQL92の標準に合わせる為の変更で,7.0ではdatetime型はtimestamp型へのリンクとなっています.のちのち廃止になるかもしれないデータ型なので,timestamp型を利用したほうが良いでしょう.

2.4 外部キーの実装

7.0系の主な変更点にこの外部キーの実装があります.外部キーとは参照整合性といって,テーブル間の親子関係に関する依存関係を自動的に保つ働きをするものです.

簡単に以下の図で見てみましょう.

ここで,t1テーブルを被参照テーブル,t2テーブルを参照テーブルと呼びます.更に,t2テーブルのidカラムはt1テーブルのidカラムを参照するということでt2テーブルのidカラムを外部キーと呼びます.

あらかじめt1テーブルのほうにデータを挿入し,その後にt2テーブルにデータを挿入するものと見て下さい.ここでt2テーブルの上から3番目までのデータは挿入できます.ですが,最後のデータは挿入できません.

これは,t2テーブルのidカラムはt1テーブルのidカラムを参照しているのですが,t1テーブルのidカラムに0004という番号がないため,参照整合性に違反するとみなされるからです.ここまでが参照整合性の基礎となります.

次は,少し違った例です. 

こちらでは,先程と同じように外部キー制約を付けてt1,t2テーブルを作成します.t1,t2テーブルにデータを入れた後,t1テーブルのidカラムが0001のところを削除しようとします.すると,このidが0001のカラムはt2テーブルから参照されているので,削除出来ないというエラーがでます.これは,削除だけでなく,参照されているデータを更新しようとした場合にも同じ事が


《《=[前の記事に] 《=[前ページ]       [次ページ]=》 [次の記事に]=》》