Уникальное Абсолютное значение MySQL

#mysql

Вопрос:

У меня есть база данных с целым id числом, которое может быть положительным или отрицательным. Однако положительное и отрицательное целое число с одинаковым абсолютным значением существовать не может.

Можно ли настроить ключ, который гарантировал id бы уникальность абсолютного значения?

Следующая попытка возвращает синтаксическую ошибку:

 ALTER TABLE `table` ADD KEY(ABS(`id`));
 

Комментарии:

1. что это select version(); показывает?

Ответ №1:

Добавьте виртуальный сгенерированный столбец в структуру таблицы и однозначно проиндексируйте его.

 ALTER TABLE tablename
    ADD COLUMN abs_id INT AS (ABS(id)) VIRTUAL,
    ADD UNIQUE INDEX (abs_id));
 

ДЕМОНСТРАЦИЯ