Insertar campo de tipo Image

08/11/2004 - 14:58 por Lara | Informe spam
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

#1 Gustavo Larriera [MVP]
08/11/2004 - 15:35 | Informe spam
Tal vez este artículo te sea de utilidad:

http://www.microsoft.com/spanish/ms...sp03g8.asp

Gustavo Larriera, MVP
Uruguay LatAm
http://sqljunkies.com/weblog/gux/
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho / This posting is provided "AS IS" with no warranties, and confers
no rights.
"Lara" wrote in message
news:
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






Preguntas similares