how to use UNIQUE index correctly?

为君一笑 提交于 2019-12-12 01:39:54

问题


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

回答1:


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); 



回答2:


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.



来源:https://stackoverflow.com/questions/3456249/how-to-use-unique-index-correctly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!