CDaoDatabase::CreateRelation

void CreateRelation( LPCTSTR lpszName,
                     LPCTSTR lpszTable,
                     LPCTSTR lpszForeignTable,
                     long lAttributes,
                     LPCTSTR lpszField,
                     LPCTSTR lpszForeignField
                   );
  throw( CDaoException, CMemoryException );

void CreateRelation( CDaoRelationInfo& relinfo );
  throw( CDaoException,CMemoryException );

参数:
lpszName关系对象的唯一命名。名字必须以字母打头,最多可以有40个字符。可以有数字和下划线,但不能包含标点符号和空格。
lpszTable关系中主表的名字。如果指定的表不存在,MFC会产生一个CDaoExecption类型的异常。
lpszForeignTable关系中外表的名字。如果指定的表不存在,MFC会产生一个CDaoExecption类型的异常。
lAttributes关系的类型。是一个long型值。可以用它来增强参照完整性。可以使用位操作OR(|)组合下面的值(只要该组合是有意义的)。
·dbRelationUnique一对一的关系。
·dbRelationDontEnforce非强制关系(没有参照完整性限制)。
·dbRelationInherited关系的两个表不在当前数据库中。
·dbRelationUpdateCacade级联更新(参阅说明部分对级联更新的解释)。
·dbRelationDeleteCacade级联删除。
lpszField指向字符串(以null结尾)的指针。字符串中包含了主表(由lpszTable指定)的字段名。
lpszForeignField指向字符串(以null结尾)的指针。字符串中包含了外表(由lpszForeignTable指定)的字段名。
rRefinfo对一个CDaoRelationInfo对象的参考。该对象包含了待创建的关系的有关信息。

说明:
本函数用于在主表的一个或多个字段与外表的一个或多个字段间建立一个关系。关系不能用于查询或从外部数据库来的表。
如果两个表都只用一个字段,则可以采用本函数的第一个版本。否则就使用第二个版本。单个关系中使用的字段的最大个数为14。
本函数创建了一个DAO关系对象,但这是MFC的实现细节,因为MFC在类CDaoDatabase中实现了对关系对象的封装。MFC未提供关系类。
如果关系对象的属性设置允许级联操作,在关系的主表的记录改变或删除时,数据库引擎就会自动地更新或删除一个或多个相关表中的相关记录。
例如,假设在Customers表和Orders表之间建立了一个允许级联删除的关系。在Customers表中删除记录时,Orders表中与被删除记录相关的记录也会被删除。此外,如果在Orders表与其它的表之间也建立了允许级联删除的关系,则在Customers表中删除记录时,那些表的相关记录也会被删除。
更详细的信息,请参阅DAO帮助中的“CreateRelation方法”。

请参阅:CDaoDatabase::DeleteRelation