Ver la Versión Completa : dbExpress + Constraint
totote
22-12-2007, 16:11:29
Buenas, Hay alguna forma de saber que campos son PK o FK en una tabla desde dbExpress, por ejempo para otener las tablas de una base de datos y sus campos es:
// Obtener Tablas
DataModule.SQLConnection.GetTableNames(ListBox1.Items,False);
// Obtener Campos
Tabla:= ListBox1.Items[ListBox1.ItemIndex];
DataModule.SQLConnection.GetFieldNames(Tabla,ListBox2.Items);
Lo que necesito saber ahora es como se cuales campos son PK o FK. Saludos
Al González
22-12-2007, 18:59:22
¡Hola a todos!
Totote: No especificas qué base de datos utilizas, ni la versión de Delphi / dbExpress, pero si por casualidad estuvieras trabajando con Firebird / InterBase, con esta consulta SQL puedes obtener los nombres de los campos de una tabla que constituyen llaves foráneas (FKs) —una de las dos cosas que buscas—.
Select ISe.RDB$Field_Name From RDB$Index_Segments ISe
Inner Join RDB$Relation_Constraints RC
On RC.RDB$Index_Name = ISe.RDB$Index_Name
Where (RC.RDB$Relation_Name = :Tabla) And
(RC.RDB$Constraint_Type = 'FOREIGN KEY')
Mirando el contenido de la tabla RDB$Relation_Constraints, podrás descubrir fácilmente cómo obtener entonces los campos que son llaves primarias.
Confírmanos qué base de datos utilizas. En general, no dejes de retroalimentar el hilo. Gracias.
Un abrazo foráneo.
Al González. :)
totote
22-12-2007, 23:41:49
Ups!!! fue sin querer, Si la version de delphi es 2007, no se que versión de dbExpress será, y el motor de base de datos es firebird es 2.0, ahora pruebo esto que me estás diciendo, hay algun sitio para más información, nunca se me ocurrió buscar por el lado del motor, pero ahora lo haré tambien. Gracias por la ayuda Al
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.