我在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到很多,也许几百个行,而我不会添加数百列来做到这一点。
所以,我认为没有办法做到这一点,但我希望知道更多的人能证明我做错了。