Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-05-2011
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
crear referencia en tabla firebird

Hola tengo un BD en Firebird con una tabla movimientos y otra tabla items, quiero crear una referencia donde el maestro seria la tabla movimientos y el detalle la tabla items, estoy probando con alter table pero no me sale, pienso que seria algo como:
alter table movimientos alter column id_cab references items(item_id_cab)
Agradezco si pueden decirme como crear la referencia en tablas exisitentes y tambien como hacerlo al crear la tabla desde cero.
Gracias y saludos.
Responder Con Cita
  #2  
Antiguo 26-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ebeltete.

Declarar la relación en la creación de la tabla sería algo como:
Código SQL [-]
CREATE TABLE DETALLE(
   DETALLE_ID INTEGER DEFAULT 1 NOT NULL,
   CAMPO1 CHAR(6) NOT NULL,
   CAMPO2 VARCHAR(30) NOT NULL,
   ...
   REFMAESTRO INTEGER NOT NULL,
   CONSTRAINT DETALLE_PK PRIMARY KEY(DETALLE_ID),
   FOREIGN KEY(REFMAESTRO) REFERENCES MAESTRO(MAESTRO_ID) 
     ON DELETE SET NULL 
     ON UPDATE CASCADE  /* acciones referenciales (pueden omitirse) */ 
);
Estas son las acciones referenciales:
NO ACTION: No hará nada.
CASCADE : Realizará la misma acción en las tablas relacionadas.
SET NULL : Pondrá NULL en las columnas de las tablas relacionadas.
SET DEFAULT : Pondrá el valor definido por defecto en las columnas de las tablas relacionadas.

Ahora desde Delphi, un ejemplo con los componentes IBX.
Teniendo dos TIBDataSet , llamemoslos: tbMaestro y tbDetalle, los cuáles tienen sus respectivos TDataSources: dsMaestro y dsDetalle.
Los cambios se harán sobre tbDetalle y son:
A la propiedad DataSource de tbDetalle tenés que asignarle dsMaestro y en su propiedad SelectSQL, algo como:
Código SQL [-]
SELECT * FROM DETALLE
WHERE REFMAESTRO = :MAESTRO_ID
Los nombres de tabla y campos deberás cambiarlos por los que vos pusiste.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-05-2011 a las 13:47:11. Razón: CORRECCION: en código SQL.
Responder Con Cita
  #3  
Antiguo 26-05-2011
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
Ok. entiendo, haciendo:
SELECT * FROM DETALLE
WHERE REFMAESTRO = :MAESTRO_ID
al insertar datos en detalle, el campo REFMAESTRO lo completa automaticamente con el valor de MAESTRO_ID o lo tengo que hacer yo?
Responder Con Cita
  #4  
Antiguo 27-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola ebeltete.

En ese caso tendrías que completar el valor.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-05-2011 a las 22:43:28.
Responder Con Cita
  #5  
Antiguo 30-05-2011
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
o no... http://www.clubdelphi.com/foros/showthread.php?t=4333

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 30-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Lepe Ver Mensaje
o no... Saludos
No conocia esa posibilidad, muchísimas gracias por el dato Lepe, voy a probarlo



Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-05-2011 a las 10:45:17.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear Tabla Firebird mjjj Firebird e Interbase 6 26-05-2008 18:12:16
Tabla de Referencia Cruzada santi33a MS SQL Server 3 03-02-2006 21:49:00
como ejecutar un query haciendo referencia a una tabla que esta en red????? reggaealex SQL 2 20-01-2005 19:36:48
Referencia a los campos de una tabla en Interbase mglucero Firebird e Interbase 2 05-11-2004 09:45:57
UPDATE con referencia a otra tabla... JorgeBec SQL 6 05-08-2004 20:48:36


La franja horaria es GMT +2. Ahora son las 19:43:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi