仅允许两个表之一引用基本表的约束

| 我有3张桌子。一个基本表称为表A,两个引用表A的表分别称为表X和表Y。X和Y都有一个引用表A的外键约束。X和Y的外键也是它们自己的首要的关键。 我想知道是否可以添加一个约束,该约束将仅允许这些表之一包含引用表A的Recrod。因此,如果X具有引用A的记录,则Y不能具有一个且如果Y有一个引用A的记录,那么X不能有一个。 这可能吗? 谢谢,     
已邀请:
        使用UDF的CHECK约束(这是Oded的回答)不能很好地扩展并且并发性很差。看到这些: 包装在CHECK约束中的标量UDF非常慢,可能无法进行多行更新 托尼·罗杰森 所以: 创建一个新表,例如TableA2XY 它具有TableA的PK和带有CHECK的char(1)列,以允许仅X或Y。并且对A的PK也具有唯一约束。 tableX和tableY具有新的char(1)列,并带有检查以分别仅允许X或Y tableX和tableY在两列上的FK均为TableA2XY 这是超键或子类型方法 全部基于DRI 没有触发器 CHECK约束中没有具有表访问权限的udfs。     
        是的,可以使用CHECK约束。 除了常规外键约束之外,您还需要在两个引用表上添加CHECK约束,以确保在另一个引用表中不使用外键。     

要回复问题请先登录注册