1

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

假设表结构为

CUSTOMER TABLE

columns
CUSTOMER_ID UNIQUE
CUSTOMER NAME
CUST_MOB_NUMBER

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

谁能告诉如何做到这一点。截至目前,我正在考虑制作 2 列 uique。有什么方法可以使 2 列一起唯一吗?

4

1 回答 1

4

假设这些需求是有意义的(说没有两个客户会拥有相同的名字是没有意义的——世界上有很多 John Smiths)。人们通常有多个手机号码。

您可以将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 )
);
于 2012-07-10T04:38:03.870 回答