В нашей БД есть специальный вид таблицы, в которой хранится история ее изменений.Так называемая «самоархивируемая» таблица:
CREAT TABLE coverages (
id INT, # primary key, auto-increment
subscriber_id INT,
current CHAR, # - could be "C" or "H".
record_version INT,
# etc.
);
В ней хранятся «покрытия» наших подписчиков.Поле «текущий» указывает, является ли это текущей / исходной записью («C») или исторической записью («H»).
Мы могли бы иметь только одно текущее покрытие «C» для данного подписчика, но мыне может создать уникальный индекс с 2 полями (* subscriber_id и current *), потому что для любой данной записи "C" может быть любое количество записей "H" - история изменений.
Таким образом, индекс долженбыть уникальным только для current == 'C' и любого subscriber_id.
Это можно сделать в Oracle DB с помощью чего-то вроде «материализованных представлений»: где мы можем создать материализованное представление, которое будетвключать только записи с current = 'C' и создать уникальный индекс с этими 2 полями: * subscriber_id, current *.
Вопрос: как это можно сделать вMySQL?