MySQL表约束要求列总和等于1

时间:2019-02-18 16:50:48

标签: mysql

我在dev.mysql上搜索了表创建,但是无法找到我所需要的。还尝试在stackoverflow上进行全面搜索,但结果还是空白。

我有一个mysql表,该表将插入行,其中某一列需要总计1,以便在应用程序中有意义。

所以'allocs'表是这样的:

----------------------------
| id | id_2  | foo  |  wt  |
----------------------------
| 1  | 3     | ab   |  .2  |
---------------------------
| 2  | 3     | cd   |  .3  |
----------------------------
| 3  | 3     | ef   |  .4  |
----------------------------
| 4  | 3     | gh   |  .1  |
----------------------------

'id'递增,但是由用户启动的每组插入语句对于该行集合将具有唯一的'id_2'。

插入将如下所示:

INSERT INTO allocs (id_2, foo, wt) VALUES (n, n, n);

'id_2'对于这组行将是唯一的,因此表中所有具有相同'id_2'的行都应具有'wt'列,总计为1。'wt'需要总计1,否则不是在应用程序内有效。

我知道我可以在插入时添加SUM,并确保'wt'列的总和不超过1,但是我希望在表上添加一个约束,以便无法添加行总计超过1。

我也希望行的总数不小于1,但是由于它们是一一插入的,所以我认为我不能将其强制作为表约束。我知道我可以在执行插入操作时执行此操作(如果行的总和至少不等于1,则删除行)。

您可能会建议我在表中包含多个foo和wt列,例如'foo_1','wt_1','foo_2','wt_2'等...,但是单个分配将包含1到很多,也许几百个行,而我不会添加数百列来做到这一点。

所以,我认为没有办法做到这一点,但我希望知道更多的人能证明我做错了。

0 个答案:

没有答案