Control secuencia de fechas

15/07/2005 - 22:00 por Alfredo Crisostomo | Informe spam
Hola, necesito una idea para implementar lo siguiente.

Tengo una tabla de documentos numerados con un campo clave ID y otro campo
FECHA, entre otros.. Este campo es numerico pero no es secuencial pues los
usuarios lo deben introducir. El problema es que el sistema debe controlar
que las fechas digitadas esten ordenadas en el orden de la PK, es decir:

ID fecha
0001 02/07/2005
0002 07/07/2005
0004 10/07/2005

que la fecha de un nuevo ID que se digite no sea mayor que la de su ID
siguiente (si lo hay) y no sea menor que la del ID anterior (si lo hay).
Nota. Los ID's se digitan en orden aleatorio.
 

Leer las respuestas

#1 Alejandro Mesa
15/07/2005 - 23:17 | Informe spam
Alfredo,

Pudieras crear un trigger, por ejemplo para insert, que chequea la regla.
Algo asi como.

use northwind
go

create table t1 (
c1 int not null unique,
c2 datetime not null
)
go

create trigger tr_t1_ins on t1
for insert
as
set nocount on

if exists(
select
*
from
inserted as i
where
exists(
select
*
from
t1 as a
where
a.c1 = (select max(b.c1) from t1 as b where b.c1 < i.c1)
and a.c2 > i.c2
)

or

exists(
select
*
from
t1 as a
where
a.c1 = (select min(b.c1) from t1 as b where b.c1 > i.c1)
and a.c2 < i.c2
)
)
begin
rollback transaction
raiserror('Fecha incorrecta.', 16, 1)
return
end
go

insert into t1(c1, c2) values(1, '20050715')
insert into t1(c1, c2) values(3, '20050716')
insert into t1(c1, c2) values(5, '20050717')
go

insert into t1(c1, c2) values(2, '20050714')
go

insert into t1(c1, c2) values(4, '20050718')
go

select * from t1 order by 1
go

drop table t1
go


AMB

"Alfredo Crisostomo" wrote:

Hola, necesito una idea para implementar lo siguiente.

Tengo una tabla de documentos numerados con un campo clave ID y otro campo
FECHA, entre otros.. Este campo es numerico pero no es secuencial pues los
usuarios lo deben introducir. El problema es que el sistema debe controlar
que las fechas digitadas esten ordenadas en el orden de la PK, es decir:

ID fecha
0001 02/07/2005
0002 07/07/2005
0004 10/07/2005

que la fecha de un nuevo ID que se digite no sea mayor que la de su ID
siguiente (si lo hay) y no sea menor que la del ID anterior (si lo hay).
Nota. Los ID's se digitan en orden aleatorio.







Preguntas similares