Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Cómo saber el nombre de una tabla

Estas en el tema de Cómo saber el nombre de una tabla en el foro de Oracle en Foros del Web. Hola compas, veréis, tengo 6 tablas, en todas ellas existe un sólo campo, que es el ID, y en cada tabla el id es distinto ...
  #1 (permalink)  
Antiguo 26/11/2007, 13:05
 
Fecha de Ingreso: noviembre-2007
Mensajes: 60
Antigüedad: 16 años, 5 meses
Puntos: 0
Cómo saber el nombre de una tabla

Hola compas,

veréis, tengo 6 tablas, en todas ellas existe un sólo campo, que es el ID, y en cada tabla el id es distinto entre ellas; es decir:

TablaA (id del 1 al 5) TablaB (id del 6 al 10) etc....

Mi pregunta es:

¿Si quiero borrar por Id sin dar el nombre de la tabla (es decir, quiero borrar el id 6), cómo sé en qué tabla está??? ¿Hay algún comando que diga el nombre de la tabla con el campo id 6????


Tengo que decir que tengo una tabla madre con todas las id; la tabla madre tiene como primary key el id, y el resto de hijas tienen como clave foránea la id de la tabla madre (vamos, una jerarquía pura y dura), y aunque cuando creo las tablas hago:

create table TablaC (
id int (2) ,
foreign key (id) references TablaMadre (id) on delete cascade)

y borro cualquier id, ya sea de la madre o del hijo, no se borran en cascada.

Bueno, como véis os expongo un par de problemillas en uno sólo, a ver si me podéis echar una mano.

Muchas gracias!
  #2 (permalink)  
Antiguo 28/11/2007, 13:04
Avatar de Drako_18  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 505
Antigüedad: 19 años
Puntos: 16
Re: Cómo saber el nombre de una tabla

para eso solo se me ocurre una posible solucion, insertar en otra tabla donde se encuentra el numero 6 -->

Tabla_enlaces(
ID number(3),
TABLA varchar2(25)
)



otra cosa que tambien nos a explicado nuestro profesor esque oracle asigna un solo ROWID para cada fila de todas las tablas.

(osea, nuca abra 2 filas con el mismo ROWID)... investiga apartir de esta informacion si quieres.




Otra forma aun más que se me ocurre es si sabes PLSQL navegar atravez de las tablas primero sacando todas las tablas del usuario (select * from tab;) guardarlo en un cursor y recorrer despues las tablas en busca del ID que deseas.
__________________
Rubén Espada
Desarrollador full stack .Net (Angular + JS + .Net Core)

Última edición por Drako_18; 28/11/2007 a las 13:18 Razón: una opcion más...
  #3 (permalink)  
Antiguo 03/12/2007, 13:29
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Re: Cómo saber el nombre de una tabla

Hola, en lugar de hacer busquedas, podrias enviar el mismo update a las 6 tablas, ya que de todas formas el motor tendrá que buscar dentro de las 6 tablas para saber cuál tiene el id, y me parece la manera màs simple y eficiente de buscar.

Saludos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #4 (permalink)  
Antiguo 04/12/2007, 09:21
 
Fecha de Ingreso: noviembre-2007
Mensajes: 60
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Cómo saber el nombre de una tabla

Cita:
Iniciado por Sir Matrix Ver Mensaje
Hola, en lugar de hacer busquedas, podrias enviar el mismo update a las 6 tablas, ya que de todas formas el motor tendrá que buscar dentro de las 6 tablas para saber cuál tiene el id, y me parece la manera màs simple y eficiente de buscar.

Saludos
Gracias por tu solución.

Lo que pasa es que no crees que hacer el update a las 6 tablas a la vez sería poco eficiente??? VAmos, digo, imagina que tuviera 18 tablas, ..., tendría que estar poniendo el nombre de las tablas una a una.
De todos modos muchas gracias, lo haré así.

Saludos!
  #5 (permalink)  
Antiguo 04/12/2007, 10:08
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Re: Cómo saber el nombre de una tabla

mm.. no creo que sea menos eficiente que hacer una búsqueda por cada tabla por el id (de la manera que sea).
El motor a las finales tendrá que hacer la misma búsqueda en 6 o 100 tablas si es con updates o con una busqueda previa para saber en cuàl hace el update.

Lo que puedes agregar es una condición para que si ya actualizò mas de 1 registro, no siga con los updates o las busquedas.


La otra alternativa es como planteaban màs arriba, de llevar una tabla con el registro de en qué tabla está cada ID. debería ser màs ràpido al hacer updates, pero tendrás uná tabla extra que mantener.

Saludos.
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:32.