2012-07-10 107 views
1

在我的Web應用程序中,我有客戶名稱和客戶電話號碼。我應該多次撥打同一個電話號碼。但我不應該允許多次輸入相同的客戶名稱。如果已有一位名爲'Sean Patrick'的客戶,手機號碼爲「6039274849」。將來我不應該允許一個新用戶使用同一個名字('Sean Patrick')。但我可以允許輸入相同的手機號碼('6039274849')。Oracle sql - 我們可以在同一個表中有2個唯一的列嗎

假設爲

CUSTOMER TABLE 

columns 
CUSTOMER_ID UNIQUE 
CUSTOMER NAME 
CUST_MOB_NUMBER 

我使用Spring Roo的表結構。我們將使用HibernateJPA(aspectJ代碼)來處理數據庫相關的東西。

任何人都可以告訴如何做到這一點。截至目前,我正在考慮製作2列uique。 有沒有什麼辦法讓2列獨一無二?

+0

如果有什麼東西你應該遇到一個擁有多個電話號碼的客戶,但是你不應該真的遇到擁有相同電話號碼的多個客戶。 – RobB 2012-07-10 04:10:44

+0

而且您可能會遇到同名的客戶。 – Jesse 2012-07-10 04:19:56

+0

換句話說,手機號碼可以是任何東西(可能不唯一)。但應該有獨特的客戶名稱。不重複名稱。與gmail中的user_id類似。 – user1514499 2012-07-10 05:09:15

回答

4

假設這些要求是有意義的(說沒有兩個客戶會有相同的名字 - 世界上有很多John Smiths)。而且人們通常有多個手機號碼。

可以同時聲明customer_idcustomer_name作爲唯一的(雖然customer_id幾乎可以肯定應被宣佈爲一個主鍵,而不僅僅是唯一的)

CREATE TABLE customer (
    customer_id  NUMBER PRIMARY KEY, 
    customer_name VARCHAR2(100) UNIQUE, 
    cust_mob_number VARCHAR2(20) 
); 

你一個也聲明瞭兩個列的組合作爲唯一

CREATE TABLE customer (
    customer_id  NUMBER PRIMARY KEY, 
    customer_name VARCHAR2(100), 
    cust_mob_number VARCHAR2(20), 
    CONSTRAINT uk_name_and_number UNIQUE(customer_name, customer_mob_number) 
); 
相關問題