Создать UNIQUE
индекс из нескольких столбцов в (product_id, variant_id)
:
CREATE UNIQUE INDEX line_items_prod_var_idx ON line_items (product_id, variant_id);
Однако, это позволило бы несколько записей (1, NULL)
для (product_id, variant_id)
, поскольку значения NULL
не считаются идентичными.
Чтобы восполнить это, дополнительно создайте частичный UNIQUE
индекс на product_id
:
CREATE UNIQUE INDEX line_items_prod_var_null_idx ON line_items (product_id)
WHERE variant_id IS NULL;
Таким образом, вы можете ввести (1,2)
(1,3)
и (1, NULL)
, но ни один из них во второй раз.Также ускоряет запросы с условиями для одного или обоих столбцов.
Недавний, связанный ответ на dba.SE, почти напрямую применимый к вашему случаю: