Sql 仅允许两个表中的一个引用基表的约束
我有三张桌子。一个基表称为表A,两个引用表A的表称为表X和表Y。X和Y都有一个引用表A的外键约束。X和Y的外键也是它们自己的主键 我想知道是否可以添加一个约束,该约束只允许其中一个表包含引用表a的recrod。因此,如果X有一条引用a的记录,那么Y不能有一条,如果Y有一条引用a的记录,那么X不能有一条 这可能吗Sql 仅允许两个表中的一个引用基表的约束,sql,sql-server,sql-server-2008,constraints,Sql,Sql Server,Sql Server 2008,Constraints,我有三张桌子。一个基表称为表A,两个引用表A的表称为表X和表Y。X和Y都有一个引用表A的外键约束。X和Y的外键也是它们自己的主键 我想知道是否可以添加一个约束,该约束只允许其中一个表包含引用表a的recrod。因此,如果X有一条引用a的记录,那么Y不能有一条,如果Y有一条引用a的记录,那么X不能有一条 这可能吗 谢谢,是的,这是可以使用的 除了普通的外键约束外,您还需要在两个引用表上都添加一个外键,以确保在另一个引用表中不使用外键。使用UDF检查约束(这是Oded的答案)扩展性不好,并发性差。请
谢谢,是的,这是可以使用的
除了普通的外键约束外,您还需要在两个引用表上都添加一个外键,以确保在另一个引用表中不使用外键。使用UDF检查约束(这是Oded的答案)扩展性不好,并发性差。请看这些:
- 创建一个新表,比如TableA2XY
- 它有TableA的PK和一个char(1)列,该列带有一个允许onyx或Y的检查,并且对a的PK也有一个唯一的约束
- tableX和tableY有一个新的char(1)列,该列带有一个复选框,分别只允许X或Y
- tableX和tableY的FK到TableA2XY位于两列上
- 全部基于
- 没有触发器
- 检查约束中没有具有表访问权限的UDF李>