Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Borrado en cascada con Firebird (https://www.clubdelphi.com/foros/showthread.php?t=81387)

rg5820 09-11-2012 15:09:59

Borrado en cascada con Firebird
 
Buenos dias.
Mi consulta es si con Firebird se puede realizar borrado en cascada y en caso de ser asi, queria saber de que manera poder hacerlo.
Es decir para pensarlo en un ejemplo simple.

Existen 2 tablas.
"Socios"
-id.
-codigo
-nombre
-telefono

y

"Pago_de_cuotas"
-id
-Socios_Id
-Nro.Cuota
-Año
-Importe

Para borrar los registros de un socio de la tabla "Socios" y todos sus registros de la tablas "Pago_de_Cuotas"
de que manera se puede hacer esta tarea?, hay que activar o setar algún parametro en la configuración
del motor para realizar la transacción?
Muchas Gracias.

marcoszorrilla 09-11-2012 15:21:12

Tienes que utilizar en el "script" de creación la claúsula "ON DELETE CASCADE".

Código SQL [-]
CREATE TABLE TAB_KuuYletunnid (
UID DOM_PK PRIMARY KEY,
Tooleping DOM_FK REFERENCES TAB_Tooleping(UID) ON DELETE CASCADE,
...
);

Un Saludo.

Casimiro Notevi 09-11-2012 15:50:03

Cita:

Empezado por rg5820 (Mensaje 449061)
.

No repitas preguntas en distintos apartados, no olvides nuestra guía de estilo.

Young 09-11-2012 22:17:16

Creo que quedaría más claro con la sintaxis tradicional:


Código SQL [-]
CREATE TABLE PAGO_DE_CUOTAS (
  ID  INTEGER NOT NULL,
  SOCIOS_ID  INTEGER NOT NULL,
  NRO_CUOTA SMALLINT,
  ANIO SMALLINT,
  IMPORTE NUMERIC(15,2),
  PRIMARY KEY (ID),
  FOREIGN KEY (SOCIOS_ID) REFERENCES SOCIOS (ID) ON UPDATE CASCADE ON DELETE CASCADE
);

Bueno estoy suponiendo los tipos de datos y la clave primaria, a menos que sea compuesta.

Saludos.

Casimiro Notevi 10-11-2012 19:36:16

Cita:

Empezado por Young (Mensaje 449121)
Creo que quedaría más claro con la sintaxis tradicional:

El código usardo por marcoszorrilla es tradicional, en lugar de usar los tipos, usa dominios.

Young 11-11-2012 21:15:04

Cita:

Empezado por Casimiro Notevi (Mensaje 449155)
El código usardo por marcoszorrilla es tradicional, en lugar de usar los tipos, usa dominios.

Por lo mismo... tarde un momento en darme cuenta de que se trataba, por eso lo puse de forma que nosotros, los eternos principiantes, lo entendiéramos rápidamente.

Saludos.

Casimiro Notevi 11-11-2012 22:05:29

Bien, puede que así se entienda mejor por la mayoría, lo que ocurre es que a mí me lo enseñaron de esa manera, con dominios, y es la única forma que he usado siempre, para mí es tradicional. La otra forma, la que tú llamas "tradicional", para mí es la forma "extraña" :D

Resumiendo, tal y como dices tú y marcoszorrilla, se trata sólo de añadir el 'on delete cascade' :)


La franja horaria es GMT +2. Ahora son las 02:15:20.

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