Есть ли способ сделать всю строку MySQL уникальной
У меня есть таблица в MySQL с 30 столбцами и тысячами записей.
Есть ли способ сделать каждую строку уникальной, это означает, что если строка уже существует, я не могу снова ввести эту строку.
Я не могу использовать первичные или уникальные ключи здесь, потому что индивидуально каждый столбец может быть повторен.
Я хочу, чтобы строка была уникальной.
например: -Есть таблица с
columns->name,age,height,weight.
В этом столбце я не могу сделать один или два столбца уникальными, но у меня не должно быть двух записей со всеми одинаковыми данными.
Ответы
Ответ 1
Вам нужен составной первичный ключ.
Составной первичный ключ сообщает MySQL, что вы хотите, чтобы ваш первичный ключ представлял собой комбинацию полей.
Подробнее здесь:
Зачем использовать несколько столбцов в качестве первичных ключей (составной первичный ключ)
Ответ 2
Вы можете создать уникальный индекс, который включает все столбцы в таблице
ALTER TABLE buyers ADD UNIQUE idx_row_unique(first_name,last_name,...);
Таким образом, вы можете сохранить уникальный первичный ключ AUTO INCREMENT
для объединения, сохраняя при этом, что все данные в вашей таблице уникальны.
Ответ 3
Вы можете создать UNIQUE key
для всех столбцов, а не для отдельных уникальных ключей для каждого столбца. Это означает, что комбинация значений будет уникальной - именно то, что вам нужно. Но учтите, что если какой-либо столбец допускает нулевое значение, если столбец содержит значение null
, он будет считаться уникальным, даже если другая строка содержит те же значения, с null
для одного и того же значения.
Ответ 4
Вы можете создать уникальный индекс для нескольких столбцов. Просто поместите все столбцы в индекс. Если столбцы велики, вы можете столкнуться с проблемами с максимальной длиной индекса, но сначала попробуйте и посмотрите.
Ответ 5
Вы можете хешировать данные и установить значение хеша в качестве вашего PK, это обеспечит уникальность строк.