0

我有一个名为contents的表,其中包含特定化学式的成分。正如怀疑的那样,如果将成分以错误的顺序添加到配方中,则配方是不成功的。因此,考虑我有六个字段:

编号 | 公式_id | 成分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”递增,所以我来这里寻求您的帮助。

4

1 回答 1

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`);
于 2013-08-14T12:27:07.350 回答