Un trigger de fechas

26/06/2006 - 17:37 por Anl. Geovanny Tomalá | Informe spam
Saludos a los miembros del grupo de noticias, tengo un problemita
actualmente tengo un trigger el cual no me debe permitir actualizaciones de
fechas superiores a la fecha de envío de un x producto con la sentencia
DATEDIFF el query me arroja valores menores a cero cuando la fecha de
asignación (ent_fecha_asignacon) es mayor a la fecha de envío
(ent_fecha_envio) este triger la tengo en producción pero no esta trabajando
de la forma como se requiere, si alguien me podría ayudar con la corrección
del cdoigo del trigger se lo agradecería mucho.

create trigger trg_ProtbEntrega
on protbEntrega for update
as
begin
if update(ent_fecha_asignacion)
begin
if ((select datediff(month,b.ent_fecha_asignacion,a.ent_fecha_envio) from
protbentrega a, deleted b
where a.ent_codigo=b.ent_codigo and a.pro_codigo=b.pro_codigo and
a.suc_codigo=b.suc_codigo)<0)
begin
raiserror ('Error, la fecha de asignación no puede ser mayor al mes de
ingreso del producto', 16, -1)
rollback transaction
end
end
end

Saludos cordiales,

Anl. Geovanny Tomalá
 

Leer las respuestas

#1 Isaias
26/06/2006 - 19:10 | Informe spam
Geovanny

Primero, debes utlizar JOIN en lugar de hacer una union con WHERE, segundo,
estas comparando una diferencia con MESES, ¿Es correcto?, si dices que NO
debe ser la FECHA MAYOR a la del ENVIO, entonces deberias comparar con >=,
¿cierto?
Saludos
IIslas


"Anl. Geovanny Tomalá" wrote:

Saludos a los miembros del grupo de noticias, tengo un problemita
actualmente tengo un trigger el cual no me debe permitir actualizaciones de
fechas superiores a la fecha de envío de un x producto con la sentencia
DATEDIFF el query me arroja valores menores a cero cuando la fecha de
asignación (ent_fecha_asignacon) es mayor a la fecha de envío
(ent_fecha_envio) este triger la tengo en producción pero no esta trabajando
de la forma como se requiere, si alguien me podría ayudar con la corrección
del cdoigo del trigger se lo agradecería mucho.

create trigger trg_ProtbEntrega
on protbEntrega for update
as
begin
if update(ent_fecha_asignacion)
begin
if ((select datediff(month,b.ent_fecha_asignacion,a.ent_fecha_envio) from
protbentrega a, deleted b
where a.ent_codigo=b.ent_codigo and a.pro_codigo=b.pro_codigo and
a.suc_codigo=b.suc_codigo)<0)
begin
raiserror ('Error, la fecha de asignación no puede ser mayor al mes de
ingreso del producto', 16, -1)
rollback transaction
end
end
end

Saludos cordiales,

Anl. Geovanny Tomalá



Preguntas similares