Я хочу иметь таблицу БД, которая будет иметь (среди других дополнительных полей):частичная уникальность индекса
int id
int group_id
varchar(20) code
int code_status
коды генерируются случайным образом, и я хотел бы обеспечивать уникальность group_id + кода в пределах область действия конкретного кода_стату (например, 0). т. Е. Иметь group_id+code where codes_staus=0
быть уникальным. так, что, например, это o.k. иметь:
id,group_id,code,code_status
1,1,1,0
2,1,2,0
потому что коды уникальны. он также должен быть o.k. иметь:
1,1,1,1
2,1,1,1
3,1,1,0
потому что даже если группа + код не является уникальной ее o.k. пока статус не равен 0.
Но имея
1,1,1,0
1,1,1,0
не должно быть разрешено.
Могу ли я использовать какую-либо форму индексов, чтобы заставить этот тип частичной уникальности? или я должен просто искать group_id + код + 0 перед любой новой вставкой?
Мне нужно это, чтобы работать с MySQL, но также оценил бы решения, которые работают с другими БД только с целью расширения моих знаний.
Также рассмотрите «TRIGGER» и «INSERT .. ON DUPLICATE KEY UPDATE». –