Trigger con ALTER TABLE desde Select

06/07/2004 - 12:37 por Jomaweb | Informe spam
Hola:
Pretendo añadir un campo nuevo en la tabla de Campos por cada Categoria
añadida en la tabla Categorias..
Lo hago mediante el siguiente TRIGGER:

CREATE TRIGGER anadir_campo ON [dbo].[CATEGORIAS]
FOR INSERT
AS
declare @campo varchar(200)
select @campo=categoria from inserted
begin
ALTER TABLE campos ADD [ @campo ] DATETIME
end


El problema es que me añade literalmente "@campo", no el nombre del campo
real introducido. Los corchetes son para los nombres de campo con espacios.
Pero si los quito me da "error en @campo".

Sé que es un error de sintaxis pero no lo veo ¿podéis echarme una mano?

Gracias mil

Preguntas similare

Leer las respuestas

#6 Jomaweb
06/07/2004 - 14:52 | Informe spam
Aunque ahora que lo pienso...¿podría dar permisos solamente al SP para el
ALTER TABLE?
En vez de darselos al usuario como está ahora. Seria un poco más seguro
¿verdad?


"Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
news:
¿Pero no sería más sencillo implementar la transformación de los datos
directamente en la aplicación cliente? Yo sigo pensando que no es muy
recomendable que un usuario final tenga permisos de modificación sobre una
tabla, por las implicaciones que eso tiene..., aunque bueno, tampoco me


voy
a meter en el diseño de tu aplicación ;-)


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Jomaweb" escribió en el mensaje
news:
> El motivo de hacerlo así es que en una de las vistas que presento al
usuario
> necesito Denormalizar y Pivotar una tabla. Es decir, que las columnas
pasen
> a ser filas y viceversa.
> Como esto no se puede hacer en SQL Server, tengo la tabla generada


gracias
> al disparador y solamente tengo que rellenarla con un SELECT desde la
> aplicación.
>
> La solución de Jesús López es óptima, gracias
>
>
> "Carlos Sacristan" <csacristan ARROBA mvps.org> escribió en el mensaje
> news:
> > No se puede porque lo tendrías que hacer con sql dinámico (EXEC o
> > SP_EXECUTESQL), construyendo la sentencia de alteración de tabla y
> > ejecutándola.
> >
> > Sin embargo lo que estás haciendo no te lo puedo recomendar en
> absoluto.
> > No conozco la situación que te lleva a plantearte implementar ese
código,
> > pero no creo que sea lo mejor ir modificando el diseño de una tabla


cada
> vez
> > que se modifican los datos. ¿Por qué no explicas exactamente lo que
estás
> > intentando hacer?
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > Por favor, responder únicamente al foro
> > Se agradece la inclusión de sentencias DDL
> >
> >
> > "Jomaweb" escribió en el mensaje
> > news:
> > > Hola:
> > > Pretendo añadir un campo nuevo en la tabla de Campos por cada
Categoria
> > > añadida en la tabla Categorias..
> > > Lo hago mediante el siguiente TRIGGER:
> > >
> > > CREATE TRIGGER anadir_campo ON [dbo].[CATEGORIAS]
> > > FOR INSERT
> > > AS
> > > declare @campo varchar(200)
> > > select @campo=categoria from inserted
> > > begin
> > > ALTER TABLE campos ADD [ @campo ] DATETIME
> > > end
> > >
> > >
> > > El problema es que me añade literalmente "@campo", no el nombre del
> campo
> > > real introducido. Los corchetes son para los nombres de campo con
> > espacios.
> > > Pero si los quito me da "error en @campo".
> > >
> > > Sé que es un error de sintaxis pero no lo veo ¿podéis echarme una
mano?
> > >
> > > Gracias mil
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#7 ulises
06/07/2004 - 15:08 | Informe spam
Hay trucos para retornar las filas como columnas en una
sentencia SQL, la explicación sobre los más sencillos lo
puedes encontrar en

HOW TO: Rotate a Table in SQL Server
http://support.microsoft.com/defaul...cid=kb;en-
us;175574

que te pueden dar una idea para cosas más complejas.

Saludos,
Ulises

El motivo de hacerlo así es que en una de las vistas que


presento al usuario
necesito Denormalizar y Pivotar una tabla. Es decir, que


las columnas pasen
a ser filas y viceversa.
Como esto no se puede hacer en SQL Server, tengo la tabla


generada gracias
al disparador y solamente tengo que rellenarla con un


SELECT desde la
aplicación.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida