Hola grupo!!
Tengo un problema.
Quiero que cada vez que se actualice o inserte un registro en una tabla
(Album) que tiene un campo Foto de tipo image, dicho registro, se inserte
(duplique) en otra tabla (CopiaAlbum) que tiene la misma estructura más un
campo FechaModificacion que por defecto tendrá la fecha del sistema.
Quiero tener un trigger en Album, que haga lo siguiente cada vez que se
realiza un Insert o un Update:
Insert into CopiaAlbum (IdAlbum, Nombre, Foto) Select IdAlbum, Nombre,
Foto from Inserted
Esto no puedo hacerlo, porque me dice "Error 311: No se pueden usar columnas
de tipo text, ntext o image en tablas insertadas o borradas"
Entonces se me ocurrió llamar desde el trigger a un procedimiento
almacenado, al que le paso el IdAlbum (de la tabla Album, que se ha
actualizado o insertado)
y por otro lado el trigger lo modifico, para que no me copie el campo Foto,
ya que me da ese error 311:
CREATE TRIGGER TRG_InsertarCopiaAlbum ON [dbo].[Album]
FOR INSERT,UPDATE
AS
Declare @IdAlbum
Select @IdAlbum=IdAlbum from Inserted
INSERT INTO CopiaAlbum (IdAlbum, Nombre) SELECT IdAlbum, Nombre FROM
Inserted
exec MP_InsertarFotoCopiaAlbum @Id=@IdAlbum
GO
Con este trigger, tendría en la tabla CopiaAlbum, el registro duplicado,
pero en el campo Foto, de momento, tendría un NULL, con el siguiente
procedimiento intento insertar el campo Foto en la tabla CopiaAlbum.
El procedimiento sería:
CREATE PROCEDURE MP_InsertarFotoCopiaAlbum
@Id int
AS
Update CopiaAlbum Set Foto= (Select Foto from Album where Album.IdAlbum=@Id)
where CopiaAlbum.IdAlbum =@Id and CopiaAlbum.FechaModificacion in (Select
max(FechaModificacion) from CopiaAlbum where IdAlbum=@Id)
GO
Pero al compilar el procedimiento también me da un error..."Error 279: Los
tipos de datos text, ntext e image no son válidos en la subconsulta o
función de agregado"
Alguna idea de cómo hacerlo desde la base de datos?
Muchas gracias!!
Lara
Leer las respuestas