表格示例
t1:
__________
|id | val|
|---+----|
| 1 | a |
|---+----|
| 2 | b |
|---+----|
| 3 | c |
|---+----|
t2:
__________
|id | val|
|---+----|
| 1 | d |
|---+----|
| 2 | e |
|---+----|
| 3 | f |
|---+----|
T:
________________________________
|id | val| fk_t1_id | fk_t2_id |
|---+----|----------+----------|
| 1 | g | 1 | NULL |
|---+----|----------+----------|
| 2 | h | NUL | 1 |
|---+----|----------+----------|
| 3 | i | 3 | NULL |
|---+----|----------+----------|
'fk_t1_id'和'fk_t2_id'都是外键文件,两者都是NULL允许的。 是否有可能产生额外的约束,在一个字段上只允许1 FK而在另一个字段上只允许NULL? (不可能插入'fk_t1_id'和'fk_t2_id'都为NULL或两者都为非NULL的行)
答案 0 :(得分:0)
在具有条件的T表上创建检查约束:
CHECK((fk_t1_id不为NULL且fk_t2_id为NULL)或(fk_t1_id为NULL且fk_t2_id为非NULL))