SQL Server - AYUDA CON TRIGGER

   
Vista:

AYUDA CON TRIGGER

Publicado por YENI (9 intervenciones) el 17/09/2009 04:28:30
HOLA !!!!
TENGO UN PROBLEMA CON UN TRIGGER

UTILIZO EL SQL 7

Y HICE UN SIMPLE TRIGGER
K SE EJECUTARA ANTES DE ELIMINAR ALGUN REGISTRO

UTILIZE EL "AFTER" PERO PARECE K NO FUNCIONA EN EL SQL 7

RECIEN ENTRO EN ESTO DE LOS TRIGGER
ALGUNA AYUDA POR FAVOR

MI SINTAXIS :
CREATE TRIGGER BACKUP_MOVI
ON MOVIMIENTO
FOR DELETE
AS
SELECT M.*,getdate() AS 'FECHA SYSTEM' INTO zzzBKUP_MVMTO FROM MOVIMIENTO M
NOTA: ESTO HACE PERO DESPEUS DE ELIMINAR EL REGISTRO.. ASI K COPIA TODO MENOS EL ELIMINADO
/////////////////////////////////////////////
UNA SINTAXIS K VI ::: (NO FUNCIONA AFTER)

CREATE TRIGGER almacenar_comentarios
AFTER DELETE ON tablones
FOR EACH ROW
BEGIN
INSERT INTO tablones_log (id_usuario,n_mensaje,id_autor,contenido,n_mensaje_respuesta,fecha_tablon,id_multimedia) values (old.id_usuario,old.n_mensaje,old.id_autor,old.contenido,old.n_mensaje_respuesta,old.fecha_tablon,old.id_multimedia);
END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

RE:AYUDA CON TRIGGER

Publicado por Isaias (3186 intervenciones) el 17/09/2009 19:00:32
Debes utilizar la tabla logica DELETED para obtener el registro eliminado.

Los desencadenadores DML usan las tablas lógicas (conceptuales) deleted e inserted. Son de estructura similar a la tabla en que se define el desencadenador, es decir, la tabla en que se intenta la acción del usuario. Las tablas deleted e inserted guardan los valores antiguos o nuevos de las filas que la acción del usuario puede cambiar. Por ejemplo, para recuperar todos los valores de la tabla deleted, utilice:

SELECT * FROM DELETED --- Tendras los registros eliminados
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA CON TRIGGER

Publicado por yeni (9 intervenciones) el 17/09/2009 19:26:05
con solo poner
select * from deleted
obtengo los datos eliminados
tengo k definir de k tabla obtener los registros eliminados

ese select solo se define en el trigger
por k intente probarlo en el query y me arroja k la tabla deleted no existe

"digitando ese select en el trigger ya defino a la tabla k me refiero"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:AYUDA CON TRIGGER

Publicado por Isaias (3186 intervenciones) el 17/09/2009 22:55:07
Si usted consulta su ayuda en linea, vera que la tabla DELETED se crea automaticamente al momento de dispararse el trigger, aqui un ejemplo:

CREATE TRIGGER updFirstTable -- nombre del trigger
ON firstTableName -- Nombre de la tabla donde se crea el trigger
FOR UPDATE AS -- En que caso se dispara el trigger
BEGIN

INSERT INTO secondTableName
SELECT COL1, COL2,... FROM DELETED -- tabla creada automaticamete

END

Notes:
The INSERTED & DELETED tables are called as MAGIC Tables and are available in a trigger.
The INSERTED table would contain the data after updation. And the DELETED table would contains the data beforeupdation.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AYUDA CON TRIGGER

Publicado por YENI (9 intervenciones) el 18/09/2009 07:27:16
GRACIAS ISASIS ... YA ENTENDI UN POCO MAS SOBRE ESAS TABLAS TEMPPORALES

UNA CONSULTA MAS

HAY ALGUNA FORMA DE DECIR AL TRIGGER QUE HAGA ESA OPERACION SOLO CUANDO SE LE ORDENE

OMITIR LA OPERACION EN ALGUNAS OCASIONES

EN EL SQL 7
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:AYUDA CON TRIGGER

Publicado por Isaias (3186 intervenciones) el 18/09/2009 18:23:11
Deberias condicionarlo con el IF ()...........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar