2010-08-11 75 views
0

我在DB.i 4場設置它們成爲着重複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 

我若inputed相同的數據不能記錄。

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

您需要添加唯一約束所有領域,不爲每個,即

獨特(型號,序列號,批號,線)

解決方案:

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 2010-08-11 07:44:34

+1

@klox,是,UNIQUE(型號,序列號,批號,生產線)是指模型,序列號,批號,生產線組合在整個表格中必須是唯一的,在您當前的設計中,每個表格的值不能超過每列,即不能添加兩個模型遙控器 - 因爲這個列必須是唯一的,所以刪除每個列的唯一約束,並添加表的唯一約束 – 2010-08-11 07:59:58

+0

對不起,我是新手..你可以給我這種情況下SQL語法完全?因爲我仍然無法看到唯一索引和唯一約束之間的差異..感謝 – klox 2010-08-11 08:55:26

0

如果您創建的每個字段的唯一約束,每個領域都需要有獨特的數據。您需要創建一個無法重複使用的所有字段的UNIQUE。

UNIQUE(Model, Serial, Lot, Line) 

但是,如果所有的領域需要是唯一的,我認爲你的表沒有主鍵,您應該創建各個領域,而不是唯一的主鍵。