En una tabla maestra que se compone de dos columnas CODIGO Y NOMBRE.
Cada una de las filas de esta tabla es realmente la definicion de una
columna en otra tabla DETALLE, con una columna fija que es ORDEN.
El CODIGO de la tabla maestra es el nombre de la columna a insertar y el
NOMBRE de la tabla maestra es el contenido de esta columna en su fila 0.
Utilizo un trigger, para que al insertar una fila en la tabla maestra, este
me inserte en la tabla detalle la columna y su valor. Solo se inserta una
fila a la vez en la tabla maestra.
Trigger para insert:
DECLARE @CODIGO VARCHAR(3)
DECLARE @NOMBRE VARCHAR(35)
SELECT @CODIGO=CODIGO FROM INSERTED
SELECT @NOMBRE=NOMBRE FROM INSERTED
IF NOT EXISTS(SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_NAME='ANALITICA' AND COLUMN_NAME=@CODIGO)
BEGIN
EXEC('ALTER TABLE ANALITICA ADD ['+@CODIGO+'] VARCHAR(35) NULL')
EXEC('UPDATE ANALITICA SET ['+@CODIGO+']='+@NOMBRE+' WHERE
ORDEN=0')
END
Hay alguna forme de hacerlo sin Sql Dinamico?
Tengo otro problema, en el segundo EXEC me da error es decir si ejecuto
EXEC('UPDATE ANALITICA SET [000]=PRIMERA COLUMNA WHERE ORDEN=0') que es como
lo traduce el sql, medice que hay un error cerca de COLUMNA.
Realmente debiera ser EXEC('UPDATE ANALITICA SET [000]='PRIMERA COLUMNA'
WHERE ORDEN=0') y funciona correcto, pero no se como añadir las comillas
antes de PRIMERA y después de COLUMNA en la instruccion original
EXEC('UPDATE ANALITICA SET ['+@CODIGO+']='+(Aqui)+@NOMBRE+(y Aqui)+' WHERE
ORDEN=0').
Saludos y gracias.
Leer las respuestas