Первичный ключ на два столбца в MySQL

Нельзя вызывать произвольные функции в совпадениях, но здесь у вас есть совпадение, которое можно использовать с :ets.foldl/3 :

:ets.foldl(fn
  {<<"0X49", _ :: binary>>, "latlong"} = n, acc -> [n | acc]
  _, acc -> acc
end, [], :named_table)

5
задан GEOCHET 17 May 2012 в 12:29
поделиться

3 ответа

Создайте уникальный индекс для столбцов, что Вы хотите быть уникальными.

Например:

CREATE UNIQUE INDEX index_name ON table(col1, col2);

Посмотрите, что MySQL Create индексирует руководство.

10
ответ дан 13 December 2019 в 22:18
поделиться

Вы хотите использовать MySQL CONSTRAINT синтаксис при составлении таблицы (или изменяют существующую таблицу).

0
ответ дан 13 December 2019 в 22:18
поделиться

В дополнение к тому, что говорит gcores, я хотел бы добавить, что Ваше альтернативное предложение, проверки на прикладном уровне, является плохой вещью сделать. Что происходит, если два приложения пытаются вставить те же данные, и они чередованы? Они могут и проверить, видеть, что данные не там, и затем оба вставляют. При использовании уникального индекса существует два преимущества:

  • Пользователь не должен проверять, существует ли значение больше. Они просто пробуют операцию, и если она перестала работать, который означает, что значение уже существовало. Это уменьшает нагрузку на Вашу базу данных немного и делает прикладную логику более простой.
  • База данных всегда будет допустима, потому что она осуществляет, управляет себя. Намного легче работать с базой данных, когда можно будет рассуждать о тяжело-быстрых правилах, а не crapshoot, "мы ожидаем, что не будет никаких дубликатов, но это техническое возможный..."
0
ответ дан 13 December 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: