trigger

10/02/2009 - 10:06 por J.L.Pascual | Informe spam
hola:

por mi pregunta vereis que me estoy iniciando. Quiero hacer un trigger
para que en una tabla PEDIDOS me chequee dos campos que tengo llamados fecha
pedido y fecha entrega. Nunca puede ser fecha entrega < fecha pedido y por
eso necesito que cuando la fecha entrega sea mayor que la fecha pedido, la
fecha entrega me tome el valor de la fecha de pedido.

Yo escribo esto pero me da Sintaxis incorrecta cerca de la palabra clave
'then'

if [dbo].[PEDIDO_CABE].[fecha entrega] < [dbo].[PEDIDO_CABE].[fecha pedido]
then

update pedido_cabe set [dbo].[PEDIDO_CABE].[fecha entrega] =
[dbo].[PEDIDO_CABE].[fecha pedido]

end if

¿podéis ayudarme? Gracias anticipadas por vuestro tiempo.

NP
 

Leer las respuestas

#1 Carlos Sacristan
10/02/2009 - 10:52 | Informe spam
No puedes consultar los campos directamente, tienes que usar las tablas
virtuales inserted o deleted que existen únicamente dentro de los trigger.

En tu caso, sería algo como

IF EXISTS(SELECT 1 FROM inserted WHERE [fecha entrega] < [fecha pedido])
UPDATE pedido_cabe
SET [fecha entrega] = [fecha pedido]
FROM pedido_cabe p INNER JOIN inserted i
ON p.PK = i.PK
WHERE i.[fecha entrega] < i.[fecha pedido]

Donde "PK" es el campo(s) que conforma(n) la clave primaria de la tabla
pedido_cabe

De todos modos, esa validación la podrías implementar como una restricción
CHECK. Sería más eficiente que hacerlo dentro de un trigger, aunque a cambio
no podrías realizar esa corrección


Un saludo
-
www.navento.com
Servicios de Localización GPS


"J.L.Pascual" wrote:

hola:

por mi pregunta vereis que me estoy iniciando. Quiero hacer un trigger
para que en una tabla PEDIDOS me chequee dos campos que tengo llamados fecha
pedido y fecha entrega. Nunca puede ser fecha entrega < fecha pedido y por
eso necesito que cuando la fecha entrega sea mayor que la fecha pedido, la
fecha entrega me tome el valor de la fecha de pedido.

Yo escribo esto pero me da Sintaxis incorrecta cerca de la palabra clave
'then'

if [dbo].[PEDIDO_CABE].[fecha entrega] < [dbo].[PEDIDO_CABE].[fecha pedido]
then

update pedido_cabe set [dbo].[PEDIDO_CABE].[fecha entrega] =
[dbo].[PEDIDO_CABE].[fecha pedido]

end if

¿podéis ayudarme? Gracias anticipadas por vuestro tiempo.

NP






Preguntas similares