举个例子:有两个表A和B
A中有sysid(标识字段),Baseinfo字段
B中有Name,NationID字段B中的NationID字段取A中的sysid值,但也可以为空!!有这样的问题:
要求如果B中的某条记录通过nationid已经关联到了A中某个sysid,则A中的这条记录就
不能被删除,否则就允许被删除.这种关系如何建立.通过SQL中的级关联应该是使用不了吧???因为外键建立不起来呀...????
难道一定要在程序中判断吗?

解决方案 »

  1.   

    在表B上建一个for delete触发器,用来检查约束。
      

  2.   

    外键可以建立
    alter table B
    add constraint FK_tt
    foregin key(NationID)
    references A(sysid)
    on delete no action --要求如果B中的某条记录通过nationid已经关联到了A中某个sysid,则A中的这条记录就
    不能被删除,否则就允许被删除.
    on update no action
      

  3.   

    可以建立主外键关系
     B中的NationID(外) 和  A中的sysid(主)
    但不要选择级联删除
      

  4.   

    B表怎么可以建立外键,B表中的某条记录的NationID字段可以为空的呀???
      

  5.   

    http://www.lybbs.info/register.php?fromuid=1762919