SQL Server - trigger

   
Vista:

trigger

Publicado por practicante (1 intervención) el 04/03/2008 18:39:00
hola...como estan...bueno tengo el siguiente problema..estoy practicando con una base de datos...para una matricula y eh creado el siguiente trigger...

CREATE TRIGGER [Matricula_Detalle]
ON MATRICULA
FOR INSERT
AS
BEGIN
DECLARE @CODMATRI CHAR(19)
DECLARE @CODCUR CHAR(8)
DECLARE @CODPRO CHAR(8)
DECLARE @IDSEC CHAR(3)
DECLARE @IDCARRE CHAR(8)

SELECT @CODMATRI = IDMATRICULA, @IDSEC = IDSECCION, @IDCARRE = IDCARRERA FROM INSERTED
SELECT @CODCUR = A.IDCURSO, @CODPRO = IDPROFESOR FROM ASIGNACION A, CURSO C WHERE IDSECCION = @IDSEC
AND C.IDCARRERA = @IDCARRE AND A.IDCURSO = C.IDCURSO

INSERT INTO DETALLE_MATRICULA(IDMATRICULA,IDPROFESOR,IDCURSO) VALUES(@CODMATRI,@CODPRO,@CODCUR)
END

la intension es q ....una vez q se matricule un alumno...automaticamente...se inserte en la tabla detalle_matricula...el curso q le toca...y el profesor q le enseñara dicho curso...
antes de eso...eh creado la tabla asignacion..en la cual va...el id del profe...el idcurso...y el id de la seccion q le corresponde enseñar...hasta el momento el trigger solo inserta el ultimo curso q se encuentra en la tabla asignacion....por ejemplo...si en ese ciclo le toca llevar un alumno 6 cursos...solo inserta en el detalle el 6º curso...mientras q los primeros no...como podria hacer para q inserto los 6 cursos??...de antemano gracias por su ayuda
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

RE:trigger

Publicado por Isaias (3308 intervenciones) el 04/03/2008 19:21:53
practicante

¿Estas de acuerdo en que la tabla INSERTED puede tener 1 o VARIOS registros al momento?

Si te inserta solo un curso, es porque solo haces mencion a UN SOLO CURSO

SELECT @CODCUR = A.IDCURSO, @CODPRO = IDPROFESOR FROM ASIGNACION A, CURSO C WHERE IDSECCION = @IDSEC
AND C.IDCARRERA = @IDCARRE AND A.IDCURSO = C.IDCURSO

Tu sentencia deberia verse mas o menos asi:

INSERT INTO DETALLE
SELECT IDMATRICULA, IDSECCION, IDCARRERA
FROM INSERTED
SELECT @CODCUR = A.IDCURSO, @CODPRO = IDPROFESOR FROM ASIGNACION A, CURSO C WHERE IDSECCION = @IDSEC
AND C.IDCARRERA = @IDCARRE AND A.IDCURSO = C.IDCURSO

Ademas, deberias codificar con JOIN y dejar la forma antigua para enlazar tus tablas.

Saludos
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