Есть ли способ сделать всю строку MySQL уникальной - PullRequest
10 голосов
/ 20 июля 2011

У меня есть таблица в MySQL с 30 столбцами и тысячами записей.
Есть ли способ, которым я мог бы сделать каждую строку уникальной, это означает, что если строка уже существует, я не смогу снова войти в эту строку.

Я не могу использовать первичные или уникальные ключи здесь, потому что каждый столбец может повторяться по отдельности.
Я хочу, чтобы ряд был уникальным. например: есть таблица с

columns->name,age,height,weight.

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

Ответы [ 5 ]

19 голосов
/ 20 июля 2011

Вы можете создать уникальный индекс, который включает все столбцы в вашей таблице

ALTER TABLE buyers ADD UNIQUE idx_row_unique(first_name,last_name,...);

Таким образом, вы можете сохранить уникальный первичный ключ AUTO INCREMENT для целей объединения, сохраняя при этом уникальность всех данных в вашей таблице.

11 голосов
/ 20 июля 2011

Вам нужен составной первичный ключ.

Составной первичный ключ сообщает MySQL, что вы хотите, чтобы ваш первичный ключ представлял собой комбинацию полей.

Подробнее здесь: Зачем использовать несколько столбцов в качестве первичных ключей (составной первичный ключ)

4 голосов
/ 20 июля 2011

Вы можете создать UNIQUE key для всех столбцов, а не для отдельных уникальных ключей в каждом столбце. Это означает, что комбинация значений будет уникальной - именно то, что вам нужно. Но учтите, что если в каком-либо столбце допустимо нулевое значение, то если столбец содержит значение null, он будет считаться уникальным, даже если другая строка содержит те же значения, а null для того же значения.

2 голосов
/ 20 июля 2011

Вы можете создать уникальный индекс для нескольких столбцов. Просто поместите все столбцы в индекс. Если столбцы большие, вы можете столкнуться с проблемами с максимальной длиной индекса, но попробуйте сначала и посмотрите.

0 голосов
/ 26 апреля 2019

Вы можете хешировать данные и установить значение хеша в качестве вашего PK, это обеспечит уникальность строк.

...