在mySQL中有三个AUTO-INC字段或用TRIGGERS模拟它

时间:2013-08-14 11:02:33

标签: mysql triggers auto-increment

我有一张名为内容的表格,其中包含特定化学式的成分。如所怀疑的,如果成分以错误的顺序添加到配方中,则配方不成功。 所以,请考虑我有六个字段:

  

id | formula_id | ingredient_id |数量| item_id | add_id

其中:

id = the PK and primary index
formula_id = a repeating integer depending on the id of the formula
ingredient_id = the PK from the "ingredients" table
quantity = self-explanatory
item_id = the UNIQUE one-based item id of that ingredient as it pertains to the formula
add_id = the UNIQUE zero-based index of the order in which this ingredient is added to the formula

因此,当我修改公式和添加成分时,我想确保item_id和add_id都是由mySQL而不是PHP代码处理的增量整数,并且以后可以修改它们的方式(如果需要调整添加成分的顺序)。

由于我找不到一个体面的TRIGGER写作教程,也没有关于有三个AUTO-INC字段的任何内容,其中两个只根据“formula_id”增加,我来这里寻求你的帮助。

1 个答案:

答案 0 :(得分:0)

经过一些反复试验后,我发现我的术语更多是不正确的方法论。我本来应该寻找的是一种基于其他领域创建UNIQUE INDEX的方法。

因此,我的问题的解决方案如下:

ALTER TABLE `chem`.`formulas` 
DROP INDEX `item_id`, 
DROP INDEX `add_id`, 
ADD UNIQUE INDEX `item_id` (`id`, `formula_id`, `ingredient_id`), 
ADD UNIQUE INDEX `add_id` (`id`, `formula_id`, `ingredient_id`);