サーバー制約の処理

提供: RAD Studio
移動先: 案内検索

プロバイダ コンポーネントの使用:インデックス への移動

ほとんどのリレーショナルデータベース管理システムでは,データの整合性を実装するためにテーブルに制約を設けています。制約は,テーブルと列のデータ値についての規則,または各種テーブル内の列相互のデータ関係についての規則です。たとえば,SQL-92 準拠のほとんどのリレーショナルデータベースは,以下の制約をサポートしています。

  • NOT NULL。列に与える値がヌルにならないようにする
  • NOT NULL UNIQUE。列値がヌルにならないようにし,別のレコードでその列にすでにあるほかのどの値とも重複しないようにする
  • CHECK。列に与える値が一定の範囲内になるか,一定数の可能な値のいずれかになるようにする
  • CONSTRAINT。テーブル全体を検査する制約で,複数の列に適用される
  • PRIMARY KEY。インデックス付けのために 1 つまたは複数の列をテーブルの主キーと指定する
  • FOREIGN KEY。あるテーブル内の 1 つまたは複数の列がほかのテーブルを参照することを指定する

メモ:  制約は上記に示したものに限られるわけではありません。データベースサーバーはこれらの制約の一部またはすべてを部分的にでも全体的にでもサポートできます。これらのほかにも制約をサポートすることがあります。サポートされている制約についての詳細は,各サーバーのマニュアルを参照してください。

データベースサーバーの制約は,従来のデスクトップデータベースアプリケーションで管理しているきたさまざまなデータ検査と同じことを行います。多層データベースアプリケーションでは,アプリケーションサーバーやクライアントアプリケーションのコードでサーバーの制約と同じことを記述しなくても,その制約を利用できます。

プロバイダが BDE 対応データセットと一緒に動作する場合,プロバイダの Constraints プロパティを使用すると,クライアントデータセットとの間で受け渡しされるデータに,サーバーの制約を複製して適用することができます。ConstraintsTrue(デフォルト)の場合,ソースデータセットに保存されているサーバーの制約はデータパケットに含まれており,クライアントによるデータ更新の試みに影響を与えます。

警告:  プロバイダが制約情報をクライアントデータセットに渡すためには,制約をデータベースサーバーから取り出せなければなりません。

クライアントデータセットに送るデータにサーバーの制約を適用したくない場合があります。たとえば,パケットでデータを受け取り,さらにレコードを取得する前にレコードのローカル更新が可能なクライアントデータセットの場合,更新対象の一連のデータが一時的に不完全になるため,適用される可能性のある一部のサーバー制約を解除しなければならないことがあります。プロバイダからクライアントデータセットへの制約の複製を防ぐには,ConstraintsFalse に設定します。また,クライアントデータセットは,DisableConstraints メソッドと EnableConstraints メソッドを使って制約を無効にしたり有効にしたりできます。クライアントデータセットからの制約の有効化と無効化についての詳細は,「サーバーからの制約の処理」を参照してください。

関連項目