Oracle sql - 我们可以在同一个表中有2个唯一列

时间:2012-07-10 04:01:29

标签: sql oracle spring

在我的网络应用程序中,我有客户名称和客户电话号码。我应该多次允许相同的电话号码。但我不应该允许多次输入相同的客户名称。如果已有一位名为“Sean Patrick”的客户,手机号码为“6039274849”。将来我不应该允许具有相同名称的新用户('Sean Patrick')。但我可以输入相同的手机号码('6039274849')。

假设表结构为

CUSTOMER TABLE

columns
CUSTOMER_ID UNIQUE
CUSTOMER NAME
CUST_MOB_NUMBER

我正在使用Spring ROO。我们将使用HibernateJPA(aspectJ代码)来处理数据库相关的东西。

任何人都可以告诉你如何做到这一点。截至目前,我正在考虑制作2列uique。 有没有办法让2列独一无二?

1 个答案:

答案 0 :(得分:4)

假设要求有意义(说没有两个顾客会有相同的名字真的没有意义 - 世界上有很多约翰史密斯)。人们通常拥有多个手机号码。

您可以将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 )
);