1

Oracleにテーブルがあります:

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

payここで、1 人のユーザーが特定の日に 2 回以上アクセスできないように、oracle テーブルを変更したいと考えています。たとえば、次のように挿入することはできません。

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

にすでに支払いが行われているため、前の 2 つのレコードの後に​​ 3 行目を挿入しないでdayください10-08-12。では、この関数を oracle テーブルで作成するにはどうすればよいでしょうか?

編集- 私は複合的に作成dateしなければならないと思います。出来ますか?そう考える理由は、両方を別々に作ってしまうと、2回目は同じ日付で日付が違う列を入力することができなくなってしまうからです。timeofdayuniqueuniquetimeofday

4

2 に答える 2

3

UNIQUEに制約を追加(DATE, TIMEOFDAY):

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

この制約により、2 つのフィールドの一意の組み合わせのみが許可されます。

于 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 に答える