 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mie 01 Nov, 2006 7:35 pm Asunto: ELIMINAR UNA RESTRICCION |
|
|
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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Mie 01 Nov, 2006 11:25 pm Asunto: |
|
|
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 |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Jue 02 Nov, 2006 1:55 am Asunto: |
|
|
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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Jue 02 Nov, 2006 2:40 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|