1

我在 Oracle 中有一张表:

NAME     DATE      TIMEOFDAY    PAYMENT
SUBIR   10-08-12      DAY        10000 
SUBIR   10-08-12      NIGHT      12000

现在我想在 oracle 表中进行修改,以便单个用户pay在特定的一天不能超过一次。例如,我不能像这样插入:

NAME     DATE      TIMEOFDAY    PAYMENT
SUBIR   10-08-12      DAY        10000 
SUBIR   10-08-12      NIGHT      12000
SUBIR   10-08-12      DAY        14000

第 3 行不应插入前两条记录之后,因为已经在dayon中进行了付款10-08-12。那么如何在 oracle 表中实现这个功能呢?

编辑-我想我必须制作datetimeofday合成unique。是否可以?我这样想的原因是,如果我将它们都unique分开制作,用户将不会第二次进入具有相同日期但不同timeofday.

4

2 回答 2

3

在 上添加UNIQUE约束(DATE, TIMEOFDAY)

ALTER TABLE tableX
  ADD CONSTRAINT unique_date_timeofday
    UNIQUE (DATE, TIMEOFDAY) ;

此约束仅允许两个字段的唯一组合。

于 2012-08-10T13:59:37.143 回答
2
  1. 如果是主键:

alter table YOUR_TABLE add constraint YOUR_TABLE_PK primary key (DATE, TIMEOFADAY);

  1. 如果你只需要唯一性

create unique index YOUR_TABLE_IX1 on YOUR_TABLE_TAB (DATE, TIMEOFADAY);

于 2012-08-10T14:16:32.723 回答