A表
=================================
id              int          主键自增
Name            varchar(10)  联系人姓名
SourceType      int          联系人地址来源,1:联系人的地址在B表,2:联系人的地址在C表
AddressID       int          联系人地址在B表或C表中的ID,取那个表的由SourceType决定
B表
=================================
id              int          主键自增
Address         varchar(50)  联系人的地址C表
=================================
id              int          主键自增
Address         varchar(50)  联系人的地址
以上就是3个表的结构,我想在当A表的某条记录删除之后,对应的C表或者B表的那条记录也随之删除,不要通过触发器,仅仅通过建立主键外键的关系能否达到呢?

解决方案 »

  1.   

    一般来说都是通过促触发器来完成,通过建立外键的关系还没听说过,还有可以通过存储过程完成,或者SQL语句
      

  2.   

    建表的时候.可以建立级联更新的.级联删除.这个你看看联机丛书的create table 语法 应该会明白.
      

  3.   

    REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
            [ ON DELETE { CASCADE | NO ACTION } ]
            [ ON UPDATE { CASCADE | NO ACTION } ]
            [ NOT FOR REPLICATION ]
        | CHECK [ NOT FOR REPLICATION ]
            ( search_conditions ) 
        } 参数
      

  4.   

    建立关系做不到,因为这个关系只能做到AddressID 
    指定对应关系表的SourceType这个字段不会再关系中得到体现,所以是不可以的、有疑问:为什么联系人地址会放在2张表中?如果实际情况已经如此,就只能在数据逻辑上做处理,如触发器中去实现