SQL Server - Triggers (disparadores)

   
Vista:

Triggers (disparadores)

Publicado por Vicente (3 intervenciones) el 10/10/2011 11:37:17
Hola:

Estoy pasando una base de datos MySql a MSSql 2005, y tengo un problema con los triggers. En MySQL tengo el siguiente trigger definido

DELIMITER $$

USE `formacion`$$

CREATE
DEFINER=`root`@`localhost`
TRIGGER `formacion`.`disp1`
BEFORE INSERT ON `formacion`.`matriculas`
FOR EACH ROW
BEGIN
call asignar_matricula(new.num_matricula);
set new.fecha = now();
END$$

la tabla matriculas tiene la siguiente definicion

id_matriculas - bigint(20)
id_alumno - bigint(20)
num_matricula - varchar(20)
fecha - date

Basicamente lo que hace el trigger es cuando se produce una inserción, el campo num_matricula va a otra tabla a buscarlo, y la fecha la actualiza con la fecha del sistema.

El MySql se puede acceder a los datos antes y despues de trigger con las variables new y old. En MSSql existe algo parecido o si alquien me puede dar una idea de como hacerlo. He leido que existen las variables INSERTED y UPDATED, pero no se como acceder a ellas antes de la inserción para actualizar los datos.
Gracias
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

Triggers (disparadores)

Publicado por Isaias (3180 intervenciones) el 10/10/2011 19:11:18
INSERTED y UPDATED, son 2 tablas "temporales" que se crean con los registros afectados en el trigger y solo existen durante la ejecucion de dicho trigger, ¿como se acceden?, como cualquier otra tabla.

SELECT COUNT(*) FROM INSERTED --- si quisiera saber cuantos registros e insertadon.

Deberias leer sobre como se crean los triggers en SQL Server y sobre AFTER o INSTEAD OF

http://msdn.microsoft.com/es-es/library/ms189799.aspx
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