Для безопасного и надежного проектирования базы данных, выбор уникального индекса или уникального ограничения будет правильным решением. На мой взгляд, обычно нет необходимости (и, возможно, даже менее эффективно) использовать отдельную таблицу, которая заполняется вашими уникальными значениями с помощью триггера ...
Однако я бы временно использовал DUP_IGNORE_KEY только при массовой вставке / переносе данных, а затем тщательно проверял полученные данные. И даже в этом случае есть несколько способов избежать этого. За 20 лет работы разработчиком программного обеспечения для баз данных мне никогда не приходилось использовать DUP_IGNORE_KEY. (На самом деле, я узнал об этом только сейчас.) Я бы, конечно, НИКОГДА не использовал бы его постоянно для индексации на производственном сервере. ИМХО, это примерно так же некрасиво, как в старом VB "ON ERROR RESUME NEXT": вы не получите немедленной реакции, если что-то пойдет не так!