¿Cómo cambio un campo en un trigger INSERT?

24/09/2004 - 14:16 por Horacio | Informe spam
Hola!
Ya estudié lo de linked servers y triggers, como
anteriormente me indicaron, para resolver mi problema.
Pero ahora me encuentro con otro.
Necesito poner la fecha actual en un campo(el último) al
momento que se produce la inserción. ¿Cómo lo consigo?

Aqui esta lo que intenté hacer sin éxito:
CREATE TRIGGER Correos_insert
ON correos
FOR INSERT
AS
BEGIN TRANSACTION inserta
INSERT INTO SSBUETYGSM01.Gasmed.dbo.Correos
(dsRemitente, dsRemitenteNombre, dsDestinatario,
dsDestinatarioNombre, dsDestinatarioCC, dsDestinatarioCCO,
dsResponderA, dsAsunto, dsTipo, dsMensaje,
dsMensajeArchivo, dsAdjuntos, dtCreacion)
SELECT dsRemitente, dsRemitenteNombre, dsDestinatario,
dsDestinatarioNombre, dsDestinatarioCC, dsDestinatarioCCO,
dsResponderA, dsAsunto, dsTipo, dsMensaje,
dsMensajeArchivo, dsAdjuntos, dtCreacion
FROM inserted

IF @@ERROR <> 0
GOTO ErrorCode

insert into correos (dsRemitente, dsRemitenteNombre,
dsDestinatario, dsDestinatarioNombre, dsDestinatarioCC,
dsDestinatarioCCO,
dsResponderA, dsAsunto, dsTipo, dsMensaje,
dsMensajeArchivo, dsAdjuntos, dtCreacion, dtEnvio)
select dsRemitente, dsRemitenteNombre, dsDestinatario,
dsDestinatarioNombre, dsDestinatarioCC, dsDestinatarioCCO,
dsResponderA, dsAsunto, dsTipo, dsMensaje,
dsMensajeArchivo, dsAdjuntos, dtCreacion, getdate()
from inserted


COMMIT TRANSACTION inserta

ErrorCode:
IF @@TRANCOUNT <> 0
PRINT 'Error Code'
 

Leer las respuestas

#1 Maxi
24/09/2004 - 14:33 | Informe spam
Hola, el Getdate() va en el Select y no en la lista de campos!! sino tambien
podes poner un Default en el campo


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Horacio" escribió en el mensaje
news:2f0701c4a230$572a33d0$
Hola!
Ya estudié lo de linked servers y triggers, como
anteriormente me indicaron, para resolver mi problema.
Pero ahora me encuentro con otro.
Necesito poner la fecha actual en un campo(el último) al
momento que se produce la inserción. ¿Cómo lo consigo?

Aqui esta lo que intenté hacer sin éxito:
CREATE TRIGGER Correos_insert
ON correos
FOR INSERT
AS
BEGIN TRANSACTION inserta
INSERT INTO SSBUETYGSM01.Gasmed.dbo.Correos
(dsRemitente, dsRemitenteNombre, dsDestinatario,
dsDestinatarioNombre, dsDestinatarioCC, dsDestinatarioCCO,
dsResponderA, dsAsunto, dsTipo, dsMensaje,
dsMensajeArchivo, dsAdjuntos, dtCreacion)
SELECT dsRemitente, dsRemitenteNombre, dsDestinatario,
dsDestinatarioNombre, dsDestinatarioCC, dsDestinatarioCCO,
dsResponderA, dsAsunto, dsTipo, dsMensaje,
dsMensajeArchivo, dsAdjuntos, dtCreacion
FROM inserted

IF @@ERROR <> 0
GOTO ErrorCode

insert into correos (dsRemitente, dsRemitenteNombre,
dsDestinatario, dsDestinatarioNombre, dsDestinatarioCC,
dsDestinatarioCCO,
dsResponderA, dsAsunto, dsTipo, dsMensaje,
dsMensajeArchivo, dsAdjuntos, dtCreacion, dtEnvio)
select dsRemitente, dsRemitenteNombre, dsDestinatario,
dsDestinatarioNombre, dsDestinatarioCC, dsDestinatarioCCO,
dsResponderA, dsAsunto, dsTipo, dsMensaje,
dsMensajeArchivo, dsAdjuntos, dtCreacion, getdate()
from inserted


COMMIT TRANSACTION inserta

ErrorCode:
IF @@TRANCOUNT <> 0
PRINT 'Error Code'





Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.764 / Virus Database: 511 - Release Date: 15/09/2004

Preguntas similares