Trigger

17/04/2009 - 02:04 por Javier Montero | Informe spam
Buen dia a todos
Me interrogante es la siguiente:
Tengo un Trigger el cual debe de evitar al momento de hacer un update que la
fecha del codigo de orden sea menor a la fecha actual, ya he probado de
varias maneras y si no es que permite cualquier fecha me bloque cualquiera,
espero me puedan dar una mano con esto, les dejo el codigo que estaba
probando

USE BookGames
IF OBJECT_ID ('dbo.TR_U_FecDetCompras','TR') IS NOT NULL
DROP TRIGGER dbo.TR_U_FecDetCompras
GO
CREATE TRIGGER dbo.TR_U_FecDetCompras
ON dbo.Ordenes_Compras
AFTER UPDATE
AS
DECLARE @FecNow datetime


Select @Fecnow = OcFecOrden
From Ordenes_Compras

IF (@FecNow > getdate())
year(@fecnow) < year(getdate()))
BEGIN
RAISERROR ('Trigger - 01 No se pueden actualizar fecha inferior a la actual,
contacte al DBA',16,10)
Rollback Transaction
END
GO

Preguntas similare

Leer las respuestas

#1 Noldis Chumacero Chávez
17/04/2009 - 03:08 | Informe spam
Javier,

Utiliza un trigger

INSTEAD OF

Y realiza la pregunta antes de hacer el update, si todo es correcto entonces
recién realizas el update y si no entonces puedes generar un mensaje de
error o bien no hacer el update.

Atte

Noldis Chumacero
Santa Cruz de la Sierra - Bolivia

www.embalate.com



"Javier Montero" escribió en el mensaje de noticias
news:
Buen dia a todos
Me interrogante es la siguiente:
Tengo un Trigger el cual debe de evitar al momento de hacer un update que
la fecha del codigo de orden sea menor a la fecha actual, ya he probado de
varias maneras y si no es que permite cualquier fecha me bloque
cualquiera, espero me puedan dar una mano con esto, les dejo el codigo que
estaba probando

USE BookGames
IF OBJECT_ID ('dbo.TR_U_FecDetCompras','TR') IS NOT NULL
DROP TRIGGER dbo.TR_U_FecDetCompras
GO
CREATE TRIGGER dbo.TR_U_FecDetCompras
ON dbo.Ordenes_Compras
AFTER UPDATE
AS
DECLARE @FecNow datetime


Select @Fecnow = OcFecOrden
From Ordenes_Compras

IF (@FecNow > getdate())
and year(@fecnow) < year(getdate()))
BEGIN
RAISERROR ('Trigger - 01 No se pueden actualizar fecha inferior a la
actual, contacte al DBA',16,10)
Rollback Transaction
END
GO

Respuesta Responder a este mensaje
#2 Alejandro Mesa
17/04/2009 - 04:00 | Informe spam
Javier Montero,

Cuando dices la fecha, te refieres a dia/mes/año o puede ser la misma fecha
y tiempo (hh:mm:ss) menor al actual?

Debes tener en cuenta que los triggers se disparan por cada operacion y no
por cada fila afectada por la operacion.

CREATE TRIGGER dbo.TR_U_FecDetCompras
ON dbo.Ordenes_Compras
AFTER UPDATE
AS

if @@rowcount = 0 return;

DECLARE @FecNow datetime;

Set @FecNow = dateadd([day], datediff([day], '19000101', getdate()),
'19000101');

IF EXISTS (
Select *
From deleted
where OcFecOrden < @FecNow
)
BEGIN
RAISERROR ('Trigger - 01 No se pueden actualizar fecha inferior a la actual,
contacte al DBA',16,10);
Rollback Transaction;
END
GO


AMB


"Javier Montero" wrote:

Buen dia a todos
Me interrogante es la siguiente:
Tengo un Trigger el cual debe de evitar al momento de hacer un update que la
fecha del codigo de orden sea menor a la fecha actual, ya he probado de
varias maneras y si no es que permite cualquier fecha me bloque cualquiera,
espero me puedan dar una mano con esto, les dejo el codigo que estaba
probando

USE BookGames
IF OBJECT_ID ('dbo.TR_U_FecDetCompras','TR') IS NOT NULL
DROP TRIGGER dbo.TR_U_FecDetCompras
GO
CREATE TRIGGER dbo.TR_U_FecDetCompras
ON dbo.Ordenes_Compras
AFTER UPDATE
AS
DECLARE @FecNow datetime


Select @Fecnow = OcFecOrden
From Ordenes_Compras

IF (@FecNow > getdate())
year(@fecnow) < year(getdate()))
BEGIN
RAISERROR ('Trigger - 01 No se pueden actualizar fecha inferior a la actual,
contacte al DBA',16,10)
Rollback Transaction
END
GO



Respuesta Responder a este mensaje
#3 Javier Montero
17/04/2009 - 07:47 | Informe spam
Gracias Ajelandro
Fijate que todavia me refiero al ese tipo de fecha dd/mm/yyy la hora y
minutos no me interesan, mira probe con el codigo que me das pero siempre me
genera el mismo error que de la fecha es inferior a la actual sin importar
que fecha le coloque en el update
Saludos

"Alejandro Mesa" wrote in message
news:
Javier Montero,

Cuando dices la fecha, te refieres a dia/mes/año o puede ser la misma
fecha
y tiempo (hh:mm:ss) menor al actual?

Debes tener en cuenta que los triggers se disparan por cada operacion y no
por cada fila afectada por la operacion.

CREATE TRIGGER dbo.TR_U_FecDetCompras
ON dbo.Ordenes_Compras
AFTER UPDATE
AS

if @@rowcount = 0 return;

DECLARE @FecNow datetime;

Set @FecNow = dateadd([day], datediff([day], '19000101', getdate()),
'19000101');

IF EXISTS (
Select *
From deleted
where OcFecOrden < @FecNow
)
BEGIN
RAISERROR ('Trigger - 01 No se pueden actualizar fecha inferior a la
actual,
contacte al DBA',16,10);
Rollback Transaction;
END
GO


AMB


"Javier Montero" wrote:

Buen dia a todos
Me interrogante es la siguiente:
Tengo un Trigger el cual debe de evitar al momento de hacer un update que
la
fecha del codigo de orden sea menor a la fecha actual, ya he probado de
varias maneras y si no es que permite cualquier fecha me bloque
cualquiera,
espero me puedan dar una mano con esto, les dejo el codigo que estaba
probando

USE BookGames
IF OBJECT_ID ('dbo.TR_U_FecDetCompras','TR') IS NOT NULL
DROP TRIGGER dbo.TR_U_FecDetCompras
GO
CREATE TRIGGER dbo.TR_U_FecDetCompras
ON dbo.Ordenes_Compras
AFTER UPDATE
AS
DECLARE @FecNow datetime


Select @Fecnow = OcFecOrden
From Ordenes_Compras

IF (@FecNow > getdate())
and
year(@fecnow) < year(getdate()))
BEGIN
RAISERROR ('Trigger - 01 No se pueden actualizar fecha inferior a la
actual,
contacte al DBA',16,10)
Rollback Transaction
END
GO



Respuesta Responder a este mensaje
#4 Carlos Sacristan
17/04/2009 - 10:55 | Informe spam
Si lo que quieres es que no se actualice a una fecha anterior a la actual,
debes cambiar la llamada de la tabla virtual "deleted" por "inserted". Es
decir, en la instrucción

IF EXISTS (
Select *
From deleted
where OcFecOrden < @FecNow
)

poner en realidad


IF EXISTS (
Select *
From inserted
where OcFecOrden < @FecNow
)
"Caminar sobre el agua y desarrollar software a partir de unas
especificaciones es fácil… si ambas están congeladas."
Edward V. Berard, ingeniero informático

http://blogs.solidq.com/es/elrincondeldba

"Javier Montero" escribió en el mensaje
news:
Gracias Ajelandro
Fijate que todavia me refiero al ese tipo de fecha dd/mm/yyy la hora y
minutos no me interesan, mira probe con el codigo que me das pero siempre
me genera el mismo error que de la fecha es inferior a la actual sin
importar que fecha le coloque en el update
Saludos

"Alejandro Mesa" wrote in
message news:
Javier Montero,

Cuando dices la fecha, te refieres a dia/mes/año o puede ser la misma
fecha
y tiempo (hh:mm:ss) menor al actual?

Debes tener en cuenta que los triggers se disparan por cada operacion y
no
por cada fila afectada por la operacion.

CREATE TRIGGER dbo.TR_U_FecDetCompras
ON dbo.Ordenes_Compras
AFTER UPDATE
AS

if @@rowcount = 0 return;

DECLARE @FecNow datetime;

Set @FecNow = dateadd([day], datediff([day], '19000101', getdate()),
'19000101');

IF EXISTS (
Select *
From deleted
where OcFecOrden < @FecNow
)
BEGIN
RAISERROR ('Trigger - 01 No se pueden actualizar fecha inferior a la
actual,
contacte al DBA',16,10);
Rollback Transaction;
END
GO


AMB


"Javier Montero" wrote:

Buen dia a todos
Me interrogante es la siguiente:
Tengo un Trigger el cual debe de evitar al momento de hacer un update
que la
fecha del codigo de orden sea menor a la fecha actual, ya he probado de
varias maneras y si no es que permite cualquier fecha me bloque
cualquiera,
espero me puedan dar una mano con esto, les dejo el codigo que estaba
probando

USE BookGames
IF OBJECT_ID ('dbo.TR_U_FecDetCompras','TR') IS NOT NULL
DROP TRIGGER dbo.TR_U_FecDetCompras
GO
CREATE TRIGGER dbo.TR_U_FecDetCompras
ON dbo.Ordenes_Compras
AFTER UPDATE
AS
DECLARE @FecNow datetime


Select @Fecnow = OcFecOrden
From Ordenes_Compras

IF (@FecNow > getdate())
and
year(@fecnow) < year(getdate()))
BEGIN
RAISERROR ('Trigger - 01 No se pueden actualizar fecha inferior a la
actual,
contacte al DBA',16,10)
Rollback Transaction
END
GO









email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida