ocultar campos de la BBDD que no salgan en los informes
Tenemos una tabla en la que queremos quitar un campo, pero si quitamos ese campo hay que tocar mucho código. QuerÃa saber si se puede ocultar un campo de una base datos (oracle10g) para cuando se saquen los informes no salgan estos campos.
Graciasssssssss
Graciasssssssss
lo que puedes hacer, si no quieres borrar la columna es inutilizarla,
ALTER TABLE TABLA1 SET UNUSED COLUMN COLUMNA1 CASCADE CONSTRAINTS;
Esto te permita mantener la columna, pero para oracle es como si no formara parte de la tabla, es decir, que cuado consultas la tabla no se ven sus datos. incluso, podrias agregar una columna con el mismo nombre que una columna no utilizada.
Si despues te interesa borrar la coluna, solo tienes que hacer,
ALTER TABLE TABLA1 DROP UNUSED COLUMNS;
Espero que te sirva.
ALTER TABLE TABLA1 SET UNUSED COLUMN COLUMNA1 CASCADE CONSTRAINTS;
Esto te permita mantener la columna, pero para oracle es como si no formara parte de la tabla, es decir, que cuado consultas la tabla no se ven sus datos. incluso, podrias agregar una columna con el mismo nombre que una columna no utilizada.
Si despues te interesa borrar la coluna, solo tienes que hacer,
ALTER TABLE TABLA1 DROP UNUSED COLUMNS;
Espero que te sirva.
Muy interesante chemian, no sabia esa historia.
Un pregunta, ¿ se puede hacer al reves ? quiero decir que una columna que la has puesto en UNUSUED ponerla de nuevo en estado normal
Un pregunta, ¿ se puede hacer al reves ? quiero decir que una columna que la has puesto en UNUSUED ponerla de nuevo en estado normal
Yo no he visto en ningun lado la forma de hacerlo, y tampoco he probado lo que dice a (que no dudo que funcione) ni lo probaria por el riesgo que supone, salvo que no me quedase otra.
Para lo que realmente se suele aplicar esto es en caso de que tengas que borrar varios campos de una tabla. Es decir, si quieres borrar 2 o mas campos de la forma tradicional, lo haras de uno en uno, y cada vez que se hace esto, se actualizan las filas de la tabla, por lo que si borras 3 campos, se actualizan 3 veces las filas de la tabla con el coste que eso supone, siempre teniendo en cuenta que sean grandes tablas. Utilizando este metodo, pones todos los campos que quieras borrar primero a unused, lo cual no tiene ningun coste, y cuando creas mas oportuno, es decir, cuando la BBDD este tranquilita sin carga, pues lanzas el DROP. Como las filas ya estaban unused, sabes que nadie las esta utilizando, y ademas, las filas de la tabla solo se actualizaran 1 vez.
Espero haberme explicado bien.
Saludos
Para lo que realmente se suele aplicar esto es en caso de que tengas que borrar varios campos de una tabla. Es decir, si quieres borrar 2 o mas campos de la forma tradicional, lo haras de uno en uno, y cada vez que se hace esto, se actualizan las filas de la tabla, por lo que si borras 3 campos, se actualizan 3 veces las filas de la tabla con el coste que eso supone, siempre teniendo en cuenta que sean grandes tablas. Utilizando este metodo, pones todos los campos que quieras borrar primero a unused, lo cual no tiene ningun coste, y cuando creas mas oportuno, es decir, cuando la BBDD este tranquilita sin carga, pues lanzas el DROP. Como las filas ya estaban unused, sabes que nadie las esta utilizando, y ademas, las filas de la tabla solo se actualizaran 1 vez.
Espero haberme explicado bien.
Saludos
también puedes indicar un rango (de la primera a la 10000) para ir haciendo el drop y luego un continue (10001 a la 20000) etc....
quiero decir que oracle dice que no se puede volver a su anterior estado, pero modificando algunas filas en su diccionario se puede...... con el riesgo de dejar que te den soporte si te pasa algo, claro
Muchas Gracias chemian!!!!!!!!!!
EstarÃa bien pero como tenemos inserts, update, select en el codigo, si inutilizamos esos campos nos dara error porque no existe esa columna.
De todos modos muchas gracias, me he dado cuenta que no tengo que modificar la base datos para nada. Oculto de la aplicacion ese campo y entonces ese valor lo cogera como null. Como esa columna podÃa ser null, pues podemos cogerlo como NULL
Adios y gracias
EstarÃa bien pero como tenemos inserts, update, select en el codigo, si inutilizamos esos campos nos dara error porque no existe esa columna.
De todos modos muchas gracias, me he dado cuenta que no tengo que modificar la base datos para nada. Oculto de la aplicacion ese campo y entonces ese valor lo cogera como null. Como esa columna podÃa ser null, pues podemos cogerlo como NULL
Adios y gracias
