在我的网络应用程序中,我有客户名称和客户电话号码。我应该多次允许相同的电话号码。但我不应该允许多次输入相同的客户名称。如果已有一位名为“Sean Patrick”的客户,手机号码为“6039274849”。将来我不应该允许具有相同名称的新用户('Sean Patrick')。但我可以输入相同的手机号码('6039274849')。
假设表结构为
CUSTOMER TABLE
columns
CUSTOMER_ID UNIQUE
CUSTOMER NAME
CUST_MOB_NUMBER
我正在使用Spring ROO。我们将使用HibernateJPA(aspectJ代码)来处理数据库相关的东西。
任何人都可以告诉你如何做到这一点。截至目前,我正在考虑制作2列uique。 有没有办法让2列独一无二?
答案 0 :(得分:4)
假设要求有意义(说没有两个顾客会有相同的名字真的没有意义 - 世界上有很多约翰史密斯)。人们通常拥有多个手机号码。
您可以将customer_id
和customer_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 )
);