I have a table in MySQL with 30 columns and thousands of entries.
Is there a way I could make every row unique, that means if a row already exists, I should not be able to e
You need a composite primary key.
A composite primary key tells MySQL that you want your primary key to be a combination of fields.
More info here: Why use multiple columns as primary keys (composite primary key)
You may create UNIQUE key
on all the columns, not individual unique keys on each column. This means that the combination of the values will be unique - exactly what you need. But please note, that if any column allows null value, if the column contains null
value, it will be counted as unique, even if another row contains the same values, with null
for the same value.
You can make a unique index that includes all of the columns in your table
ALTER TABLE buyers ADD UNIQUE idx_row_unique(first_name,last_name,...);
This way you can keep a unique AUTO INCREMENT
primary key for join purposes, while still ensuring that all of the data in your table is unique.
You can hash the data and set the hash value as your PK, this will ensure that the rows are unique.
You can make a unique index on more than one column. Just put all the columns in the index. If the columns are large you may run into issues with the maximum length of an index, but try it first and see.