Ver Mensaje Individual
  #4  
Antiguo 20-04-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Hola.

Ahora comprendo el problema.

Puedes utilizar las tablas de sistema para identificar todas las claves foráneas de tu tabla, y después con un EXECUTE STATEMENT, eliminarlas.

Tablas de Sistema de Firebird :

http://www.alberton.info/firebird_sql_meta_info.html

En concreto, creo que necesitas :

SELECT RDB$INDEX_NAME
FROM RDB$INDICES
WHERE RDB$RELATION_NAME='Nombre de la Tabla'
AND RDB$FOREIGN_KEY IS NOT NULL

Funcionamiento del EXECUTE STATEMENT :

http://www.firebirdsql.org/refdocs/l...-execstat.html

NOTA: Esto lo puedes hacer, por ejemplo en un procedimiento almacenado (con un bucle FOR sobre el SELECT para las claves foráneas). Por lo que tu script daría de alta el procedimiento almacenado, lo ejecutaría con un "execute procedure" y finalmente lo eliminaría.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita