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

Preguntas similare

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






Respuesta Responder a este mensaje
#2 Lara
08/11/2004 - 16:44 | Informe spam
Muchísimas gracias Gustavo. Ya tengo resuelto mi problema.
Al final lo que hago es llamar desde el trigger a un procedimiento
almacenado, pasándole el IdAlbum, y en el procedimiento es donde realizo el
Insert en CopiaAlbum. Creo que esto es lo más sencillo que puedo hacer..
No se, creo que me centré en hacer el Insert en el trigger, y al final me
compliqué mucho.., y mira qué sencillo era. ;)

Saludos!
Lara





"Gustavo Larriera [MVP]" escribió en el mensaje
news:%
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
>
>
>
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida