2009-12-14 48 views
0

我有列MySQL的分配自動編號到非主鍵列

  1. CID(客戶)
  2. cemail(客戶電子郵件)
  3. CFAX(客戶電子郵件)
  4. CNAME表(客戶名稱)

現在我希望在cid,cemail,cfax中不應有重複,因爲我將這些全部作爲主鍵,但如果只有一個值是不同的租數據庫接受數據我希望它應該檢查所有值我現在應該做什麼?

回答

0
CREATE TABLE `customers` (
    `cid` int NOT NULL auto_increment, 
    `cemail` varchar(123) NOT NULL, 
    `cfax` varchar(123) NOT NULL, 
    `cname` varchar(123) NOT NULL, 
    PRIMARY KEY (`cid`), 
    UNIQUE KEY `cemail` (`cemail`,`cfax`,`cname`) 
); 
+0

我使用這個代碼,但它也允許CFAX的重複和也cemail意味着它確實解決問題 – 2009-12-14 15:45:28

+0

CREATE TABLE'客戶' ( 'cid' INT NOT NULL的auto_increment, 'cemail' VARCHAR(123)NOT NULL, 'cfax' VARCHAR(123)NOT NULL, 'cname' VARCHAR(123)NOT NULL, PRIMARY KEY('cid' ), UNIQUE KEY'cemail'('cemail'),UNIQUE KEY'cfa x'('cfax'),UNIQUE KEY'cname'('cname') ); 它意味着爲每個我們想要的列定義唯一的密鑰 – 2009-12-14 15:54:23

+0

此代碼工作完美CREATE TABLE customers(cid int NOT NULL auto_increment,cemail varchar(123)NOT NULL,cfax varchar(123)NOT NULL,cname varchar(123)NOT NULL ,主鍵(cid),唯一鍵cemail(cemail),唯一鍵'cfax'('cfax'),唯一鍵'cname'('cname'));它意味着爲我們想要的每個列定義唯一的鍵 – 2009-12-14 15:55:42

1

您應該跨這些字段創建一個unique index

正如一個簡單的例子(未測試):

CREATE UNIQUE INDEX my_index ON my_table(cemail, cfax, cname);