У меня есть таблица MySQL, в которой есть пять столбцов местоположения (Лос-Анджелес, Нью-Йорк и т. Д.), Которые имеют значение столбца окрестности, код, который относится к местоположению (LA, NY и т. Д.).) и идентификатор пользователя. Код и идентификатор пользователя всегда присутствуют, и по крайней мере один из столбцов местоположения имеет значение.mysql динамически добавляет уникальное ограничение
В идеале я хотел бы, чтобы нормализовать эту table-, но как краткосрочное решение, я хотел бы добавить ограничение, которое говорит:
«обеспечивает уникальное сочетание USERID, кода и местоположение «.
Например:
Row1: имеет идентификатор пользователя = 1, код = NY, Нью-Йорк = Бруклин, Лос-Анджелес = Chinatown
row2: имеет идентификатор пользователя = 1, код = NY, New Йорк = Вест-Сайд, Лос-Анджелес = Китайский квартал
Вторая строка должна быть разрешена для вставки, поскольку район Нью-Йорка отличается.
я пробовал регулярные ограничения:
места ТАБЛИЦА ALTER ADD UNIQUE location
(user_id
, code
, new_york
); (user_id
, code
, los_angeles
);
, но вторая строка не вставлена, потому что второе ограничение выше останавливает его.
Не удалось нормализовать таблицу, каков наилучший вариант для создания этого ограничения?
Не создавало бы уникальное ограничение на user_id, код и все столбцы местоположения, решив вашу проблему? "ALTER TABLE местоположения ADD UNIQUE location (user_id, code, new_york, los_angeles, ...);" –
@ jedrzej.kurylo Это должно работать, если он использует NULL в столбцах «другого» местоположения; если он использует что-то вроде '' (пустая строка) или жестко закодированная строковая константа, такая как «[IRRELEVANT]», которая может быть его проблемой сейчас. – Uueerdo