我在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行,因为已在day
10-08-12
上进行了付款。那么如何在oracle表中创建这个函数呢?
编辑 - 我想我必须date
和timeofday
复合unique
。可能吗?我这样思考的原因是,如果我分别制作unique
两个,则不允许用户第二次输入具有相同日期的行但使用不同的timeofday
。
答案 0 :(得分:3)
在UNIQUE
上添加(DATE, TIMEOFDAY)
约束:
ALTER TABLE tableX
ADD CONSTRAINT unique_date_timeofday
UNIQUE (DATE, TIMEOFDAY) ;
此约束仅允许两个字段的唯一组合。
答案 1 :(得分:2)
alter table YOUR_TABLE add constraint YOUR_TABLE_PK primary key (DATE, TIMEOFADAY);
create unique index YOUR_TABLE_IX1 on YOUR_TABLE_TAB (DATE, TIMEOFADAY);