2010-08-11 5 views
0

я есть 4 поля на DB.i установить их стали косяк дублировать entry.They являются:как правильно использовать индекс UNIQUE?

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 

и если я те же данные занесены не могут записываться.

remocon   x0001    033a   fa 01 

, но как сделать этот успех данных для ввода, если я типа как:

remocon  x0002  033a   fa 01 

и я хочу, чтобы результат, как:

Model   Serial    Lot    Line 
remocon   x0001    033a   fa 01 
remocon   x0002    033a   fa 01 

ответ

6

Вам необходимо добавить уникальное ограничение для всех полей , не для каждого, то есть

UNIQUE (модель, серийный, лот, линия)

решение:

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) 

)

для существующей таблицы:

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

Могу ли я получить результат, как я хочу, если бы я использовал это? – klox

+1

@klox, Да, UNIQUE (Model, Serial, Lot, Line) означает, что комбинация полей Model, Serial, Lot, Line должна быть уникальной для всей таблицы, в вашем текущем проекте вы не можете иметь больше, чем значение для таблицы для каждый столбец, т. е. не может добавить две модели remocon - потому что этот столбец должен быть уникальным, поэтому удалите уникальное ограничение для каждого столбца и добавьте уникальное ограничение для таблицы –

+0

извините, я новичок. Можете ли вы дать мне полный синтаксис sql для этого случая ? потому что я все еще не вижу различий между уникальным индексом и уникальным ограничением..thanks – klox

0

Если создать уникальное ограничение для каждого поля, каждое поле должно иметь уникальные данные. Вам нужно создать UNIQUE со всеми полями, которые невозможно воспроизвести.

UNIQUE(Model, Serial, Lot, Line) 

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

Смежные вопросы