使用UDF的CHECK约束(这是Oded的回答)不能很好地扩展并且并发性很差。
所以:
- 创建一个新表,例如TableA2XY
- 它具有TableA的PK和带有CHECK的char(1)列,以允许仅X或Y。并且对A的PK也具有唯一约束。
- tableX和tableY具有新的char(1)列,并带有检查以分别仅允许X或Y
- tableX和tableY在两列上的FK均为TableA2XY
这是超键或子类型方法
- 全部基于DRI
- 没有触发器
- CHECK约束中没有具有表访问权限的udfs。

使用UDF的CHECK约束(这是Oded的回答)不能很好地扩展并且并发性很差。
所以:
这是超键或子类型方法