Averiguar La Estructura De Una Tabla.


Objetivo: Averiguar La Estructura De Una Tabla.
Necesito saber qué claves externas tiene una tabla. Para averiguarlo dispongo, en mysql de la consulta show create table ..., pero la aplicación también usa bases de SQLITE. El sistema usando shell es engorroso, por cuanto hay que generar un script que genere un fichero de texto que luego se analiza, etc. etc..

La pregunta es ¿Es posible averiguar las claves foráneas de una tabla con gambas puro y duro, sin recurrir a herramientas de terceros?

Gracias por las respuestas... si las hay.

Perfil MP  
Objetivo: Re: Averiguar La Estructura De Una Tabla.
Hola

todo depende de tu implementacion.

si usas vectores pra crear las tablas entonces podras saber cualquier cosa de ellas en tiempo de ejecución y en cualquier módulo..

Objetivo: Re: Averiguar La Estructura De Una Tabla.
No quiero crearlas, quiero averiguar su relación con las demás de la base de datos. Estoy modificando mi programa SIESTA (http://foro.gambas-es.org/viewtopic.php?f=5&t=1515, que maneja bases de SQLITE, mysql y PostreSQL. Hasta ahora sólo modifica tablas de SQLITE, por lo que me resulta insuficiente. Lo he modificado para que también modifique las tablas mysql, pero debe respetar la integridad referencial. Eso es fácil con mysql y, supongo, con postgreSQL (aún no lo he probado), pero me parece un follón el tener que escribir rutinas distintas para cada driver.
De ahí la pregunta ¿Se puede conocer la integridad referencial, es decir claves foráneas, índices primarios, etc. etc. sólo con gambas? Lo de la clave primaria es simple. Lo de las claves foráneas no lo tengo tan claro. Sé que cada tabla tiene una colección de indexes, pero no he encontrado información al respecto...

Perfil MP  
Objetivo: Re: Averiguar La Estructura De Una Tabla.
Hola shordi

Puedes usar los siguientes comandos mysql
describe tabla -> esto te da la estructura de la tabla. Las primary key les pone PK y las foreign key les pone FK

show create tabla -> esto te dice con que otro campo/tabla se relaciona la anterior

Pero toda esa información la tienes que ir buscando en strings y en mysql tienes una posibilidad aún mejor que sirve para cualquier cosa. Si miras en Information_schema allí tienes toda la información que buscas de forma que la puedas extraer con un select tal y como quieras y se hace mucho mas manejable.

Allí dentro tienes
tables -> la lista de tablas de la base de datos
columns -> lista de columnas de una tabla
constraints -> aquí hay un campo type que puede ser unique, primary key o foreign key
key_column_usage -> columnas con restricciones tanto por índices como foreign keys
routines -> lista de procedimientos almacenados
views -> lista de vistas
triggers -> lista de triggers

Es una información muy amplia, merece la pena que le eches un vistazo. Creo que aqui puedes encontrar a tu gusto toda la información que buscas filtrada, ordenada y clasificada como gustes

Enlace

Sé que también se puede hacer a traves de gb.mysql al menos parte pero yo creo que te compensa mirar bien lo anterior porque eso te resuelve todos los problemas que puedas tener a nivel de estructura de una base de datos mysql en cualquier caso. Allí está todo y para manejarlo tu es un simple objeto result.

Perfil MP  
Objetivo: Re: Averiguar La Estructura De Una Tabla.
Gracias soplo, con mysql lo tenía ya resuelto. Lo del information_schema es lo primero que me planteé aunque luego lo solucioné de otra manera porque no estaba muy seguro de que los usuarios restringidos que utilizo en las aplicaciones tengan acceso a esa tabla, lo que pasa es que no me gusta mucho el tener que programar las rutinas para cada driver. Si gambas tuviese dentro de las propiedades del objeto connection la solución... miel sobre hojuelas.
Tendré que seguir con lo de antes.
De nuevo gracias a todos.

Perfil MP  
Objetivo: Re: Averiguar La Estructura De Una Tabla.
En una de las propiedades de un tipo fields de base de datos está la propiedad foreign keys. De esa forma podrías obtener la información que buscas por medio de gambas. No lo he usado nunca, solo lo he visto.

Enlace

Enlace

última edición por soplo el Sabado, 11 Junio 2011, 14:28; editado 1 vez
Perfil MP  
Objetivo: Re: Averiguar La Estructura De Una Tabla.
mmmmm lo miraré, a bote pronto parece que es para la creación de tablas sólo. El lunes lo miro.
Gracias, soplo.

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.1158s (PHP: -34% SQL: 134%)
Consultas SQL: 24 - Debug off - GZIP Activado