次の方法で共有


CDaoDatabase::CreateRelation

更新 : 2007 年 11 月

データベースの主テーブルの 1 つ以上のフィールドと、外部キー テーブル (データベース内の別のテーブル) の 1 つ以上のフィールドとの間に関係を確立します。

void CreateRelation( 
   LPCTSTR lpszName, 
   LPCTSTR lpszTable, 
   LPCTSTR lpszForeignTable, 
   long lAttributes, 
   LPCTSTR lpszField, 
   LPCTSTR lpszForeignField  
);
void CreateRelation( 
   CDaoRelationInfo& relinfo  
);

パラメータ

  • lpszName
    リレーションシップ オブジェクトの一意名。名前は、英字で始まり、最大 40 文字まで指定できます。名前には、数字とアンダースコアを含めることはできますが、区切り記号やスペースを含めることはできません。

  • lpszTable
    リレーションシップの主テーブル名。テーブルが存在しないと、MFC は CDaoException 型の例外をスローします。

  • lpszForeignTable
    リレーションシップの外部キー テーブル名。テーブルが存在しないと、MFC は CDaoException 型の例外をスローします。

  • lAttributes
    リレーションシップ型についての情報を持つ long 値。特に、関係に参照整合性を適用するために、この値を使用できます。ビットごとの OR 演算子 (|) を使って、次の値を (組み合わせが矛盾しない限り) 組み合わせることができます。

    • dbRelationUnique   リレーションシップは一対一です。

    • dbRelationDontEnforce   リレーションシップは強制されません (参照整合性はありません)。

    • dbRelationInherited   リレーションシップは 2 つのアタッチ テーブルを保持する非現在のデータベースに存在します。

    • dbRelationUpdateCascade   更新は連鎖されます (連鎖については、「解説」を参照してください)。

    • dbRelationDeleteCascade   削除が連鎖的に行われます。

  • lpszField
    (lpszTable で指定された) 主テーブルのフィールド名を持つ null で終わる文字列へのポインタ。

  • lpszForeignField
    (lpszForeignTable で指定された) 外部キー テーブルのフィールド名を持つ null で終わる文字列へのポインタ。

  • relinfo
    作成するリレーションシップに関する情報を持つ CDaoRelationInfo オブジェクトへの参照。

解説

リレーションシップは、クエリや、外部データベースからのアタッチ テーブルには適用されません。

リレーションシップが 2 つのテーブルのそれぞれの 1 つのフィールドを必要とするときは、この関数の最初の形式を使います。リレーションシップが複数のフィールドを必要とするときは、2 番目の形式を使います。リレーションシップ内の最大フィールド数は 14 です。

この動作は、基になる DAO リレーションシップ オブジェクトを作成します。MFC リレーションシップ オブジェクトをカプセル化したものは、CDaoDatabase クラス内部に保持されるため、このリレーションシップ オブジェクトは、MFC の細部の実装になります。MFC にはリレーションシップのクラスは用意されていません。

リレーションシップ オブジェクトの属性を設定して、連鎖操作をアクティブにすると、関係付けられた主キー テーブルが変更されたときに、データベース エンジンが、自動的に 1 つ以上のほかのテーブルのレコードを更新、または削除します。

たとえば、顧客テーブルと発注テーブルの間に、連鎖削除のリレーションシップを確立しているとします。顧客テーブルからレコードを削除すると、発注テーブルのその顧客に関連するレコードも削除されます。また、発注テーブルとほかのテーブル間に連鎖削除のリレーションシップが設定されている場合、顧客テーブルからレコードが削除されると、これらのテーブルのレコードも削除されます。

関連情報については、DAO ヘルプの「CreateRelation Method」を参照してください。

必要条件

ヘッダー : afxdao.h

参照

参照

CDaoDatabase クラス

階層図

CDaoDatabase::DeleteRelation

その他の技術情報

CDaoDatabase のメンバ