MySQL和FOREIGN KEY。在允许的NULL值列上禁止NULL

时间:2014-11-11 12:33:49

标签: mysql foreign-keys

表格示例

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的行)

1 个答案:

答案 0 :(得分:0)

在具有条件的T表上创建检查约束:
CHECK((fk_t1_id不为NULL且fk_t2_id为NULL)或(fk_t1_id为NULL且fk_t2_id为非NULL))