PostgreSQL6.5というバージョンをベースに記述されていますので,7.0にアップグレードした際に追加された機能などを中心にお話をしていきます.
2.1 pg_ctlコマンドの追加
stop 停止 restart 再起動 status ステータスの報告 2.2 to_char 関数群の追加商用DBのOracle互換の関数としてto_char関数群が追加されました.to_char関数の日本語マニュアルのURLを参考文献に記述しますので,詳しくはそちらを参照してください. 2.3 timestamp と datetimetimestampも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テーブルから参照されているので,削除出来ないというエラーがでます.これは,削除だけでなく,参照されているデータを更新しようとした場合にも同じ事が |