how to use UNIQUE index correctly?
-
27-09-2019 - |
Question
i have 4 fields at DB.i set them become cant duplicate entry.They are:
1. Model Varchar(14) Unique
2. Serial varchar(8) Unique
3. Lot varchar(5) Unique
4. Line char(5) Unique
Model Serial Lot Line
First data remocon x0001 033a fa 01
and if i have inputed same data it can't recorded.
remocon x0001 033a fa 01
but how to make this data success to input if i type like:
remocon x0002 033a fa 01
and i want the result like:
Model Serial Lot Line
remocon x0001 033a fa 01
remocon x0002 033a fa 01
Solution
You need add unique constraint for all fields, not for each, i.e.
UNIQUE(Model, Serial, Lot, Line)
solution:
CREATE TABLE YourTable
(
Model Varchar(14) NOT NULL,
Serial varchar(8) NOT NULL,
Lot varchar(5) NOT NULL,
Line char(5) NOT NULL,
unique (model, serial, lot, line)
)
for existing table:
alter table YourTableName drop index model;
alter table YourTableName drop index serial;
alter table YourTableName drop index lot;
alter table YourTableName drop index line;
alter table YourTableName add unique (model, serial, lot, line);
OTHER TIPS
If you create a Unique constraint for each field, each field needs to have unique data. You need to create a UNIQUE with all the fields that can't be reapeated.
UNIQUE(Model, Serial, Lot, Line)
But if all your fields needs to be unique, i think that your table has no primary key, and you should create a PRIMARY KEY of all fields instead a UNIQUE.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow