Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

ELIMINAR UNA RESTRICCION

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ELIMINAR UNA RESTRICCION Responder citando

Para eliminar una restriccion utilizo este codigo siempre y cuando sepa el nombre de la restriccion:
Código:

ALTER TABLE DIARIO_FACTURAS DROP CONSTRAINT INTEG_15;


Pero, como puedo conocer de antemano el nombre de la restriccion?
en este caso la Restriccion se llama 'INTEG_15'

Por cierto la Base de Datos es IB 7.1

El problema es que cuando creé la restriccion no le dí nombre y el motor de la base de datos genera un nombre automaticamente. Como tengo la misma estructura de la base de datos instalada en distintos clientes, cada vez que tengo que actualizar la BDD del cliente tengo que hacer trabajos de administracion para conocer el nombre de dicha RESTRICCION.

En resumen, alguna forma de saver el nombre de la restriccion, bien sea con un componente del Builder, o bien sea mediante una consulta. GRACIAS.
_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Que tal Jesús...

Pues bien, las restricciones y cualquier infomación de la base de datos, está dentro de la misma base. A las tablas que tienen está información se les denomina tablas del sistema.

Te dejo esta liga que muestra como obtener información acerca de las restricciones.

El objetivo del enlace es otro (cambiar mensajes de interbase), pero puede servirte para lo que necesitas.

http://bdn1.borland.com/article/0,1410,28498,00.html
http://bdn1.borland.com/article/0,1410,28499,00.html

Saludos!
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Muchas gracias por tu respuesta.
En verdad la pagina es lo que estaba buscando, y lo he solucionado con este Cogigo:
Código:

   //Para obtener el nombre de la restriccion que quiero eliminar
   IBQInsCaja->Close();
   IBQInsCaja->SQL->Clear();
   IBQInsCaja->SQL->Add(
   "SELECT RDB$CONSTRAINT_NAME AS NOM_RESTRICCION FROM RDB$RELATION_CONSTRAINTS "
   "WHERE RDB$RELATION_NAME = 'DIARIO_FACTURAS' "
   "AND "
   "RDB$CONSTRAINT_TYPE = 'PRIMARY KEY';");
   IBQInsCaja->Open();

   AnsiString Indice = IBQInsCaja->FieldByName("NOM_RESTRICCION")->AsString;
   //--------------------------------------------------------------------------

   IBQInsCaja->Close();
   IBQInsCaja->SQL->Clear();
   IBQInsCaja->SQL->Add(
   "ALTER TABLE DIARIO_FACTURAS DROP CONSTRAINT " + Indice + ";");
   IBQInsCaja->ExecSQL();

   if(IBTransaction1->InTransaction)
      IBTransaction1->CommitRetaining();


En la tabla 'RDB$RELATION_CONSTRAINTS', se guardan todas las restricciones de las tablas, ello es creado automaticamente por el driver de INTERBASE.

GRACIAS DE NUEVO.
_________________
Muchos hombres no se equivocan jamás porque no se proponen nada razonable.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email Visitar sitio web del autor
Mensaje    Asunto: Responder citando

Solo te comento que tengas en cuenta que la info de restricciones se guarda además en otras tablas... asi que si modificas o eliminas ten cuidado en dónde más pueda afectar.

El segundo enlace trata de manera más detallada esta situación.

Saludos.
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.