与数据库中的多行比较

时间:2013-06-28 13:29:14

标签: database oracle database-design

我有一个名为weight_break的表格,例如0-10,10-20,20-30。

我将以上值存储为WEIGHT_BREAK表格中的3条记录,其中列名称(PK,FK,FROM_WEIGHT,TO_WEIGHT)如下所示。

PK | FK | FROM_WEIGHT | TO_WEIGHT |

100 | T1 | 0 | 10 |

101 | T1 | 10 | 20 |

102 | T1 | 20 | 30 |

注意:所有3条记录都与FK列相关,因为它们对所有3行都具有相同的值。

我想确保用户不要再将0-10,10-20,20-30基本上再插入这3条记录。如何在数据库查询中执行多行等于检查?

2 个答案:

答案 0 :(得分:0)

你可以像这样使FROM_WEIGHT和TO_WEIGHT独一无二:

alter table weight_break 
add constraint unq_weight_class UNIQUE(FK, FROM_WEIGHT, TO_WEIGHT);

通过这种方式,用户可以输入一个权重类,比如上表中的0-11表示相同的FK,但是不能再输入0-10。

希望这有帮助。

答案 1 :(得分:0)

from_weight或to_weight是多余的,您只需要其中一个来定义波段。然后,您只需要一个唯一约束,并且可以通过足够容易地查询表来重建from / to对。