我有一个称为Activity
与像activity_id
和activity_date
列的表。Oracle SQL Query来检查活动的有效日期范围?
考虑像下面的活动表中的数据,
activity_id activity_date
1 1st June
2 1st July
3 1st August
4 1st September
5 1st October
现在我想更改活动3日,但是因为有我不能日期更改为小于1st July
或超过1st September
在这些日期已经有一些其他活动。
的活动3的唯一有效日期是30th August
2nd July
之间。
同样,对于活动1,新的有效日期是1st July
之前的任何日期。
同样,对于活动5,新的有效日期范围从2nd September
在未来的任何日期作为其最后的活动。
如果新日期不在范围内,我需要在前端为用户提供验证消息。 输入到查询将活动ID和新活动的日期。
下面是DDL脚本中使用类似下面的查询
CREATE TABLE "HEADCOUNT"."ACTIVITY"
( "ACTIVITY_ID" NUMBER(*,0) NOT NULL,
"ACTIVITY_DATE" DATE
);
Insert into "HEADCOUNT"."ACTIVITY" (ACTIVITY_ID,ACTIVITY_DATE) values (1,'01-06-2012');
Insert into "HEADCOUNT"."ACTIVITY" (ACTIVITY_ID,ACTIVITY_DATE) values (2,'01-07-2012');
Insert into "HEADCOUNT"."ACTIVITY" (ACTIVITY_ID,ACTIVITY_DATE) values (3,'01-08-2012');
Insert into "HEADCOUNT"."ACTIVITY" (ACTIVITY_ID,ACTIVITY_DATE) values (4,'01-09-2012');
Insert into "HEADCOUNT"."ACTIVITY" (ACTIVITY_ID,ACTIVITY_DATE) values (5,'01-10-2012');
如何更改日期?它可以通过数据库触发器来实现,或者根据更改值的方法进行前端验证。 – Ollie 2012-07-30 13:27:08
@Ollie。我需要在前端添加验证。我们没有使用触发器。 SQl查询用于将活动更新为新的活动日期。 – ashishjmeshram 2012-07-30 13:30:42
你的麻烦是验证SQL插入最好通过触发器来完成,除非你使用一些前端环境在输入到数据库之前验证输入。您的其他选项(不是触发器)是通过在插入记录之前执行验证的存储过程进行更新,并在验证失败时返回错误消息。 – Ollie 2012-07-30 13:41:49